Submission #64973

#TimeUsernameProblemLanguageResultExecution timeMemory
64973forestryksTopovi (COCI15_topovi)C++14
66 / 120
2078 ms66560 KiB
/////////////////////////////////////////////////////////////////////////////////////////////// #include <bits/stdc++.h> using namespace std; // #define int long long #define FAST_IO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define FILE_IO(x) freopen((string(x) + ".in").c_str(), "r", stdin); freopen((string(x) + ".out").c_str(), "w", stdout) #define f first #define s second #define x1 x1qwer #define y1 y1qwer #define right right123 #define left left123 #define foreach(it, v) for (auto it : v) #define rep(it, n) for (int it = 0; it < n; ++it) #define forin(it, l, r) for (int it = l; it < r; ++it) #define all(x) x.begin(), x.end() typedef long long ll; typedef unsigned long long ull; typedef double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const double DINF = numeric_limits<double>::infinity(); const ll MOD = 1e9 + 7; const double EPS = 1e-7; ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } mt19937 mmtw_(MOD); uniform_int_distribution<ll> rd_; ll randomll() { return rd_(mmtw_);} ll rnd(ll x, ll y) { return rd_(mmtw_) % (y - x + 1) + x; } template <class T> T fact(T n) { if (n == 1) return 1; return n * fact(n - 1); } //////////////////////////////////////////////////////////////////////////////////////////////// int n, m, k; ll res = 0; map<int, int> rcnt, rval; map<int, int> ccnt, cval; map<pair<int, int>, int> rooks; void add(int r, int c, int a) { res -= (n - ccnt[rval[r]]); res -= (n - rcnt[cval[c]]); if (rval[r] != cval[c]) res++; // cout << res << endl; rcnt[rval[r]]--; rval[r] ^= a; rcnt[rval[r]]++; ccnt[cval[c]]--; cval[c] ^= a; ccnt[cval[c]]++; res += (n - ccnt[rval[r]]); res += (n - rcnt[cval[c]]); if (rval[r] != cval[c]) res--; } int main() { FAST_IO; cin >> n >> m >> k; rcnt[0] = n; ccnt[0] = n; rep(i, m) { // cout << "--- " << i << " ---" << endl; int x, y, a; cin >> x >> y >> a; add(x - 1, y - 1, a); rooks[{x - 1, y - 1}] = a; } // cout << res << endl; rep(i, k) { // cout << "--- " << i << " ---" << '\n'; int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; x1--; y1--; x2--; y2--; int val = rooks[{x1, y1}]; add(x1, y1, val); add(x2, y2, val); rooks[{x1, y1}] = 0; rooks[{x2, y2}] = val; cout << res << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...