# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
98622 | tieunhi | Topovi (COCI15_topovi) | C++14 | 1825 ms | 34808 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |