Submission #164097

#TimeUsernameProblemLanguageResultExecution timeMemory
164097beso123Topovi (COCI15_topovi)C++14
60 / 120
2087 ms39632 KiB
#include <bits/stdc++.h> #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; 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--; } int main() { 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); } 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...