Submission #541981

#TimeUsernameProblemLanguageResultExecution timeMemory
541981OlympiaTopovi (COCI15_topovi)C++17
30 / 120
807 ms34052 KiB
#include <vector> #include <algorithm> #include <iostream> #include <set> #include <cmath> #include <map> #include <random> #include <cassert> #include <ctime> #include <cstdlib> #include <limits.h> #include <queue> using namespace std; const int MOD = 10007; class DynamicThing { map<int,int64_t> oc1; map<int,int64_t> oc2; public: int64_t tot = 0; void remove (int type, int index) { if (type == 1) { tot -= oc1[index] * oc2[index]; oc1[index]--; tot += oc1[index] * oc2[index]; } else { tot -= oc1[index] * oc2[index]; oc2[index]--; tot += oc1[index] * oc2[index]; } } void add (int type, int index) { if (type == 1) { tot -= oc1[index] * oc2[index]; oc1[index]++; tot += oc1[index] * oc2[index]; } else { tot -= oc1[index] * oc2[index]; oc2[index]++; tot += oc1[index] * oc2[index]; } } DynamicThing (int N) { oc1[0] = oc2[0] = N; tot = N * N; } void print () { int ans = 0; for (auto& p: oc1) { ans += p.second * oc2[p.first]; } cout << ans; } }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); map<int,int> row_xor; map<int,int> col_xor; int64_t N, K, P; cin >> N >> K >> P; DynamicThing dt(N); map<pair<int,int>,int> loc; for (int i = 0; i < K; i++) { int64_t r, c, x; cin >> r >> c >> x; dt.remove(1, row_xor[r]); dt.remove(2, col_xor[c]); dt.add(1, (row_xor[r] ^= x)); dt.add(2, (col_xor[c] ^= x)); loc[{r, c}] = x; } //cout << dt.tot << '\n'; while (P--) { int64_t r1, c1, r2, c2; cin >> r1 >> c1 >> r2 >> c2; if (r1 != r2) { dt.remove(1, row_xor[r1]); dt.remove(1, row_xor[r2]); dt.add(1, row_xor[r1] ^= loc[{r1, c1}]); dt.add(1, row_xor[r2] ^= loc[{r1, c1}]); } if (c1 != c2) { dt.remove(2, col_xor[c1]); dt.remove(2, col_xor[c2]); dt.add(2, col_xor[c1] ^= loc[{r1, c1}]); dt.add(2, col_xor[c2] ^= loc[{r1, c1}]); } loc[{r2, c2}] = loc[{r1, c1}]; loc[{r1, c1}] = 0; cout << N * N - dt.tot << '\n'; //dt.print(); //return 0; } }
#Verdict Execution timeMemoryGrader output
Fetching results...