Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define nl "\n"
- #define fi first
- #define se second
- #define pb push_back
- #define ll long long
- #define RV return void
- #define sz(x) int(x.size())
- #define all(v) v.begin(), v.end()
- #define rall(v) v.rbegin(), v.rend()
- void solve(){
- int n,q; cin >> n >> q;
- map < ll, set < ll > > mpx;
- map < ll, set < ll > > mpy;
- for(int i =0 ; i < n ; i++){
- ll x,y; cin >> x >> y;
- mpx[x].insert(y);
- mpy[y].insert(x);
- }
- while(q--){
- ll op,x,y; cin >> op;
- if(op==3){
- ll ans =0,
- mn = mpx.begin() -> first,
- mx = mpx.rbegin() -> first;
- ans = max(ans, abs(mx-mn) + abs(*mpx[mn].begin() - *mpx[mx].begin()));
- ans = max(ans, abs(mx-mn) + abs(*mpx[mn].rbegin() - *mpx[mx].begin()));
- ans = max(ans, abs(mx-mn) + abs(*mpx[mn].begin() - *mpx[mx].rbegin()));
- ans = max(ans, abs(mx-mn) + abs(*mpx[mn].rbegin() - *mpx[mx].rbegin()));
- ll mn2 = mpy.begin() -> first,
- mx2 = mpy.rbegin() -> first;
- ans = max(ans, abs(mx2-mn2) + abs(*mpy[mn2].begin() - *mpy[mx2].begin()));
- ans = max(ans, abs(mx2-mn2) + abs(*mpy[mn2].rbegin() - *mpy[mx2].begin()));
- ans = max(ans, abs(mx2-mn2) + abs(*mpy[mn2].begin() - *mpy[mx2].rbegin()));
- ans = max(ans, abs(mx2-mn2) + abs(*mpy[mn2].rbegin() - *mpy[mx2].rbegin()));
- ans = max(ans, abs(mx2- * mpx[mn].begin()) + abs(*mpy[mx2].begin() - mn));
- ans = max(ans, abs(mx2- * mpx[mx].begin()) + abs(*mpy[mx2].begin() - mx));
- ans = max(ans, abs(mn2- * mpx[mn].begin()) + abs(*mpy[mn2].begin() - mn));
- ans = max(ans, abs(mn2- * mpx[mx].begin()) + abs(*mpy[mn2].begin() - mx));
- ans = max(ans, abs(mx2- * mpx[mn].rbegin()) + abs(*mpy[mx2].rbegin() - mn));
- ans = max(ans, abs(mx2- * mpx[mx].rbegin()) + abs(*mpy[mx2].rbegin() - mx));
- ans = max(ans, abs(mn2- * mpx[mn].rbegin()) + abs(*mpy[mn2].rbegin() - mn));
- ans = max(ans, abs(mn2- * mpx[mx].rbegin()) + abs(*mpy[mn2].rbegin() - mx));
- ans = max(ans, abs(mx2- * mpx[mn].begin()) + abs(*mpy[mx2].rbegin() - mn));
- ans = max(ans, abs(mx2- * mpx[mx].begin()) + abs(*mpy[mx2].rbegin() - mx));
- ans = max(ans, abs(mn2- * mpx[mn].begin()) + abs(*mpy[mn2].rbegin() - mn));
- ans = max(ans, abs(mn2- * mpx[mx].begin()) + abs(*mpy[mn2].rbegin() - mx));
- ans = max(ans, abs(mx2- * mpx[mn].rbegin()) + abs(*mpy[mx2].begin() - mn));
- ans = max(ans, abs(mx2- * mpx[mx].rbegin()) + abs(*mpy[mx2].begin() - mx));
- ans = max(ans, abs(mn2- * mpx[mn].rbegin()) + abs(*mpy[mn2].begin() - mn));
- ans = max(ans, abs(mn2- * mpx[mx].rbegin()) + abs(*mpy[mn2].begin() - mx));
- cout << ans << nl;
- }else if (op==2){
- cin >> x >> y;
- mpx[x].erase(y);
- if(mpx[x].empty()) mpx.erase(x);
- mpy[y].erase(x);
- if(mpy[y].empty()) mpy.erase(y);
- }else{
- cin >> x >> y ;
- mpx[x].insert(y);
- mpy[y].insert(x);
- }
- }
- }
- int main(){
- ios_base::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
- int t=1;
- // cin >> t ;
- for(int i=1 ; i <= t ; i++){
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment