#include <iostream>
#include <vector>
#include <algorithm>
#include <bitset>
#include <queue>
#include <set>
#include <map>
#define INF 1e9
using namespace std;
typedef long long ll;
map<ll, ll>row, col, valrow, valcol;
map<pair<ll, ll>, ll>v;
ll calculate(int n) {
	ll ans = 0;
	for (auto u : valrow) {
		ans += u.second * (n - valcol[u.first]);
	}
	return ans;
}
void solve()
{
	int n, k, p; cin >> n >> k >> p;
	for (int i = 1; i <= k; i++) {
		int r, c, x; cin >> r >> c >> x;
		v[{r, c}] = x;
		row[r] = row[r] ^ x;
		col[c] = col[c] ^ x;
	}
	valrow[0] = valcol[0] = n;
	for (auto u : row) {
		if (u.second == 0)continue;
		valrow[0]--;
		valrow[u.second]++;
	}
	for (auto u : col) {
		if (u.second == 0)continue;
		valcol[0]--;
		valcol[u.second]++;
	}
	while (p--) {
		int r1, c1, r2, c2; cin >> r1 >> c1 >> r2 >> c2;
		valrow[row[r1]]--; valrow[row[r2]]--;
		valcol[col[c1]]--; valcol[col[c2]]--;
		row[r1] = row[r1] ^ v[{r1, c1}];
		col[c1] = col[c1] ^ v[{r1, c1}];
		row[r2] = row[r2] ^ v[{r1, c1}];
		col[c2] = col[c2] ^ v[{r1, c1}];
		valrow[row[r1]]++; valrow[row[r2]]++;
		valcol[col[c1]]++; valcol[col[c2]]++;
		v[{r2, c2}] = v[{r1, c1}];
		v[{r1, c1}] = 0;
		cout << calculate(n) << "\n";
	}
}
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int t = 1; //cin>>t;
	while (t--) solve();
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |