Submission #156357

#TimeUsernameProblemLanguageResultExecution timeMemory
156357MosesTopovi (COCI15_topovi)C++14
120 / 120
1456 ms39776 KiB
// Created by AboAbdoMC #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #define db1(x) cout<<#x<<"="<<x<<'\n' #define db2(x,y) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<'\n' #define db3(x,y,z) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<","<<#z<<"="<<z<<'\n' #define rep(i,n) for(int i=0;i<(n);++i) #define repA(i,a,n) for(int i=a;i<=(n);++i) #define repD(i,a,n) for(int i=a;i>=(n);--i) #define f first #define s second #define pb push_back #define mp make_pair #define ll long long using namespace std; using namespace __gnu_pbds; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_set; const int OO = 1e9+7; const int MOD = 1e9+7; const int N = 1e5+7; map<int,int> xorr,xorc; map<int,int> cntr,cntc; map<pair<int,int>,int> rook; ll ans = 0; int n,k,p; void add(int r,int c,int x) { rook[{r,c}] ^= x; ans -= n-cntc[xorr[r]]; ans -= n-cntr[xorc[c]]; if (xorr[r] != xorc[c]) ans++; cntc[xorc[c]]--; cntr[xorr[r]]--; xorr[r] ^= x; xorc[c] ^= x; cntc[xorc[c]]++; cntr[xorr[r]]++; ans += n-cntc[xorr[r]]; ans += n-cntr[xorc[c]]; if (xorr[r] != xorc[c]) ans--; //db2(xorr[r],xorc[c]); } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k >> p; cntr[0] = n; cntc[0] = n; rep(i,k) { int r,c,x; cin >> r >> c >> x; add(r,c,x); //db1(ans); } while(p--) { int r1,c1,r2,c2; cin >> r1 >> c1 >> r2 >> c2; int x = rook[{r1,c1}]; add(r1,c1,x); add(r2,c2,x); cout << ans << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...