mickypinata

SMMR-T247: Leakage

Jun 14th, 2021
457
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef pair<int, int> pii;
  5. typedef set<int>::iterator sit;
  6.  
  7. set<int> leaks;
  8. set<pii> dist;
  9.  
  10. int main(){
  11.  
  12.     int Q;
  13.     scanf("%d", &Q);
  14.     for(int q = 1; q <= Q; ++q){
  15.         int cmd, x;
  16.         scanf("%d", &cmd);
  17.         if(cmd == 1){
  18.             scanf("%d", &x);
  19.             leaks.insert(x);
  20.             sit currItr = leaks.find(x);
  21.             int prv = *prev(currItr, 1);
  22.             int nxt = *next(currItr, 1);
  23.             if(currItr != leaks.begin() && next(currItr, 1) != leaks.end()){
  24.                 dist.erase(pii(nxt - prv, prv));
  25.             }
  26.             if(currItr != leaks.begin()){
  27.                 dist.emplace(x - prv, prv);
  28.             }
  29.             if(next(currItr, 1) != leaks.end()){
  30.                 dist.emplace(nxt - x, x);
  31.             }
  32.         } else if(cmd == 2){
  33.             scanf("%d", &x);
  34.             sit currItr = leaks.find(x);
  35.             int prv = *prev(currItr, 1);
  36.             int nxt = *next(currItr, 1);
  37.             if(currItr != leaks.begin() && next(currItr, 1) != leaks.end()){
  38.                 dist.emplace(nxt - prv, prv);
  39.             }
  40.             if(currItr != leaks.begin()){
  41.                 dist.erase(pii(x - prv, prv));
  42.             }
  43.             if(next(currItr, 1) != leaks.end()){
  44.                 dist.erase(pii(nxt - x, x));
  45.             }
  46.             leaks.erase(x);
  47.         } else if(cmd == 3){
  48.             cout << dist.begin() -> first << '\n';
  49.         } else if(cmd == 4){
  50.             cout << *prev(leaks.end(), 1) - *leaks.begin() << '\n';
  51.         }
  52.     }
  53.  
  54.     return 0;
  55. }
  56.  
RAW Paste Data