Submission #650126

#TimeUsernameProblemLanguageResultExecution timeMemory
650126dozerTopovi (COCI15_topovi)C++14
120 / 120
1018 ms48204 KiB
#include <bits/stdc++.h> using namespace std; #define fileio() freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout) #define fastio() cin.tie(0), ios_base::sync_with_stdio(0) #define pb push_back #define sp " " #define endl "\n" #define pii pair<int, int> #define st first #define nd second #define N 1000005 #define int long long int r[N], c[N], x[N]; map<int, int> cntr, cntc, valr, valc; map<pii, int> pw; int32_t main() { fastio(); int n, k, p; cin>>n>>k>>p; cntr[0] = n, cntc[0] = n; for (int i = 1; i <= k; i++) { cin>>r[i]>>c[i]>>x[i]; cntr[valr[r[i]]]--; valr[r[i]] ^= x[i]; cntr[valr[r[i]]]++; cntc[valc[c[i]]]--; valc[c[i]] ^= x[i]; cntc[valc[c[i]]]++; pw[{r[i], c[i]}] = x[i]; } int ans = n * n; for (auto i : cntr) ans -= i.nd * cntc[i.st]; while(p--) { int r[3], c[3]; cin>>r[1]>>c[1]>>r[2]>>c[2]; int xx = pw[{r[1], c[1]}]; pw[{r[1], c[1]}] = 0; pw[{r[2], c[2]}] = xx; for (int i = 1; i <= 2; i++) { ans += cntc[valr[r[i]]]; cntr[valr[r[i]]]--; ans += cntr[valc[c[i]]]; cntc[valc[c[i]]]--; valr[r[i]] ^= xx; cntr[valr[r[i]]]++; ans -= cntc[valr[r[i]]]; valc[c[i]] ^= xx; cntc[valc[c[i]]]++; ans -= cntr[valc[c[i]]]; } cout<<ans<<endl; } cerr<<"time taken : "<<(float)clock() / CLOCKS_PER_SEC<<" seconds\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...