# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
98622 | tieunhi | Topovi (COCI15_topovi) | C++14 | 1825 ms | 34808 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |