Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define endl '\n'
- struct Node
- {
- bool xx, xy, yx, yy;
- int x_p, y_p, x_k, y_k;
- };
- Node operator+ (Node &a, Node &b)
- {
- Node wynik;
- wynik.x_p = a.x_p;
- wynik.x_k = b.x_k;
- if(a.x_k <= b.x_p)
- wynik.xx = true;
- else
- wynik.xx = false;
- wynik.x_p = a.x_p;
- wynik.y_k = b.y_k;
- if(a.y_k <= b.x_p)
- wynik.xy = true;
- else
- wynik.xy = false;
- wynik.y_p = a.y_p;
- wynik.x_k = b.x_k;
- if(a.x_k <= b.y_p)
- wynik.yx = true;
- else
- wynik.yx = false;
- wynik.y_p = a.y_p;
- wynik.y_k = b.y_k;
- if(a.y_k <= b.y_p)
- wynik.yy = true;
- else
- wynik.yy = false;
- return wynik;
- }
- struct Tree
- {
- int sz = 1;
- vector<Node> t;
- Tree(vector<pair<int, int> > &v)
- {
- while(sz < int(v.size()))
- sz *= 2;
- t.resize(sz * 2);
- for(int i = 0; i < int(v.size()); ++i)
- {
- int j = i + sz;
- t[j].xx = t[j].xy = t[j].yx = t[j].yy = true;
- t[j].x_p = t[j].x_k = t[j].y_p = t[j].y_k = v[i].second;
- }
- if(v.size() * 2 != t.size())
- {
- for(int i = int(v.size()); i < int(t.size()); ++i)
- {
- int j = i + sz;
- t[j].xx = t[j].xy = t[j].yx = t[j].yy = true;
- t[j].x_p = t[j].x_k = t[j].y_p = t[j].y_k = 1e7;
- }
- }
- for(int i = sz - 1; i > 0; --i)
- {
- t[i] = t[i * 2] + t[i * 2 + 1];
- }
- }
- void zmien(int v, int u)
- {
- v += sz;
- u += sz;
- Node x = t[v];
- t[v] = t[u];
- while(v > 1)
- {
- v /= 2;
- t[v] = t[v * 2] + t[v * 2 + 1];
- }
- t[u] = x;
- while(u > 1)
- {
- u /= 2;
- t[u] = t[u * 2] + t[u * 2 + 1];
- }
- }
- bool czy_ok()
- {
- if(t[1].xx == 1 || t[1].xy == 1 || t[1].yx == 1 || t[1].yy == 1)
- return 1;
- return 0;
- }
- };
- int main()
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- int n;
- cin >> n;
- vector<pair<int, int> > k(n);
- for(auto &p : k)
- cin >> p.first >> p.second;
- Tree drzewo(k);
- int m;
- cin >> m;
- for(int i = 0; i < m; ++i)
- {
- int a, b;
- cin >> a >> b;
- --a;
- --b;
- drzewo.zmien(a, b);
- if(drzewo.czy_ok())
- cout << "TAK" << endl;
- else
- cout << "NIE" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement