fork download
  1. #include "bits/stdc++.h"
  2.  
  3. using namespace std;
  4.  
  5. #define f first
  6. #define lgn 25
  7. #define endl '\n'
  8. #define sc second
  9. #define N (int)2e5+5
  10. #define sz(x) x.size()
  11. #define int long long int
  12. #define ld long double
  13. #define vi vector<int>
  14. #define vs vector<string>
  15. #define vc vector<char>
  16. #define mii map<int,int>
  17. #define pii pair<int,int>
  18. #define vpii vector<pii>
  19. #define test(x) while(x--)
  20. #define pb push_back
  21. #define eb emplace_back
  22. #define pq priority_queue
  23. #define mod 1000000007
  24. #define fo(i,a,n) for(int i=a;i<n;i++)
  25. #define rfo(i,n,a) for(int i=n;i>=a;i--)
  26. #define mst(a,v,n) fo(i,0,n) a[i]=v
  27. #define all(x) begin(x),end(x)
  28. #define allr(x) rbegin(x),rend(x)
  29. #define rev(x) reverse(begin(x),end(x))
  30. #define db(x) cout<<#x <<" : "<< x <<endl;
  31. #define time() cerr << "Time : " << (double)clock() / (double)CLOCKS_PER_SEC << "s\n"
  32.  
  33. const int inf = 0x3f3f3f3f;
  34. const int INF = 0x3f3f3f3f3f3f3f3f;
  35.  
  36. int n,m,q,k;
  37. vi adj[N];
  38. pq <int,vi,less<int> > pp; // Max Heap
  39.  
  40. int dis(int x,int y)
  41. {
  42. return x*x + y*y;
  43. }
  44. void go()
  45. {
  46. cin>>q>>k;
  47. fo(i,0,q)
  48. {
  49. int ch,x,y;
  50. cin>>ch;
  51. if(ch==1)
  52. {
  53. cin>>x>>y;
  54. int distance=dis(x,y);
  55. pp.push(distance);
  56. if(sz(pp) > k) pp.pop(); // if size of queue is greater than k , remove the topmost element
  57. }
  58. else
  59. {
  60. cout<<pp.top()<<endl; // topmost element in queue is the kth nearest
  61.  
  62. }
  63. }
  64.  
  65.  
  66. }
  67.  
  68. int32_t main()
  69. {
  70. ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  71. int t=1;
  72. // cin>>t;
  73. test(t) go();
  74. }
Success #stdin #stdout 0s 8264KB
stdin
9 3
1 10 10
1 9 9
1 -8 -8
2
1 7 7
2
1 6 6 
1 5 5
2
stdout
200
162
98