fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. multiset<int> st[1200007];
  4. int a[1000007];
  5. bool add(int id,int l,int r,int i,int x) {
  6. if (l>i||r<i) return 0;
  7. if (l==r&&r==i) {
  8. st[id].insert(x);
  9. return 1;
  10. }
  11. int g=(l+r)>>1;
  12. int ok=max(add(id<<1,l,g,i,x),add(id<<1|1,g+1,r,i,x));
  13. if (ok) st[id].insert(x);
  14. return ok;
  15. }
  16. bool del(int id,int l,int r,int i,int x) {
  17. if (l>i||r<i) return 0;
  18. if (l==r&&r==i) {
  19. if (st[id].find(x)!=st[id].end()){
  20. st[id].erase(st[id].find(x));
  21. return 1;
  22. }
  23. return 0;
  24. }
  25. int g=(l+r)>>1;
  26. int ok=max(del(id<<1,l,g,i,x),del(id<<1|1,g+1,r,i,x));
  27. if (ok) st[id].erase(st[id].find(x));
  28. return ok;
  29. }
  30. int get(int id,int l,int r,int u,int v,int x) {
  31. if (l>v||r<u) return 1e9+7;
  32. if (l>=u&&r<=v) {
  33. auto it=st[id].upper_bound(x);
  34. if (it==st[id].end()) return 1e9+7;
  35. return (*it);
  36. }
  37. int g=(l+r)>>1;
  38. return min(get(id<<1,l,g,u,v,x),get(id<<1|1,g+1,r,u,v,x));
  39. }
  40. int main()
  41. {
  42. ios_base::sync_with_stdio();
  43. cin.tie(0);
  44. int n,q;
  45. cin>>n>>q;
  46. while (q--) {
  47. int t;
  48. cin>>t;
  49. if (t==1) {
  50. int pos,val;
  51. cin>>pos>>val;
  52. add(1,1,n,pos,val);
  53. } else if (t==2) {
  54. int pos,val;
  55. cin>>pos>>val;
  56. del(1,1,n,pos,val);
  57. } else {
  58. int l,r,val;
  59. cin>>l>>r>>val;
  60. int ans=get(1,1,n,l,r,val);
  61. if (ans==1e9+7)
  62. cout<<"NONE\n";
  63. else
  64. cout<<ans<<'\n';
  65. }
  66. }
  67. // cout << "Hello, World!";
  68. return 0;
  69. }
Success #stdin #stdout 0.02s 60708KB
stdin
Standard input is empty
stdout
Standard output is empty