Submission #98622

#TimeUsernameProblemLanguageResultExecution timeMemory
98622tieunhiTopovi (COCI15_topovi)C++14
120 / 120
1825 ms34808 KiB
#include <bits/stdc++.h>
#define FOR(i, u, v) for (int i = u; i <= v; i++)
#define FORD(i, v, u) for (int i = v; i >= u; i--)
#define pii pair<int, int>
#define mp make_pair
#define F first
#define S second
#define PB push_back
#define N 100005
#define mod 1000000007
#define ll long long

using namespace std;

map<int, int> row, col, cntR, cntC;
map<pii, int> dd;
ll res;
int sz, n, numQ;

void update(int u, int v, int sign)
{
    res += sign*cntC[row[u]];
    res += sign*cntR[col[v]];
    if (row[u] == col[v]) res -= sign;
}
void upd(int u, int v, int w)
{
    update(u, v, -1);

    cntR[row[u]]--;
    cntC[col[v]]--;
    row[u] ^= w; col[v] ^= w;
    cntR[row[u]]++;
    cntC[col[v]]++;

    update(u, v, 1);

}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    //freopen("INP.TXT", "r", stdin);
    cin >> sz >> n >> numQ;

    res = 1ll*sz*sz;
    cntR[0] = cntC[0] = sz;

    FOR(i, 1, n)
    {
        int u, v, w; cin >> u >> v >> w;
        upd(u, v, w);
        dd[mp(u, v)] = w;
    }
    //cout <<res<<'\n';
    while (numQ--)
    {
        int u, v, x, y; cin >> u >> v >> x >> y;
        int w = dd[mp(u, v)]; dd[mp(u, v)] = 0; dd[mp(x, y)] = w;
        upd(u, v, w);
        upd(x, y, w);
        cout <<1ll*sz*sz -res<<'\n';
    }


}
#Verdict Execution timeMemoryGrader output
Fetching results...