# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
230557 | alireza_kaviani | Topovi (COCI15_topovi) | C++17 | 878 ms | 39928 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.
/* Generated by powerful Codeforces Tool
* You can download the binary file in here https://github.com/xalanq/cf-tool (Windows, macOS, Linux)
* Author: alireza_kaviani
* Time: 2020-05-10 15:06:09
**/
#include <bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pll;
#define all(x) (x).begin(),(x).end()
#define Sort(x) sort(all((x)))
#define X first
#define Y second
#define sep ' '
#define endl '\n'
#define SZ(x) ll(x.size())
ll poww(ll a, ll b, ll md) {
return (!b ? 1 : (b & 1 ? a * poww(a * a % md, b / 2, md) % md : poww(a * a % md, b / 2, md) % md));
}
const ll MAXN = 1e6 + 10;
const ll LOG = 22;
const ll INF = 8e18;
const ll MOD = 1e9 + 7; // 998244353; // 1e9 + 9;
// row : n , col : m
ll n , k , p , ans;
map<pair<int , int> , int> val;
map<int , int> col , row , cntCol , cntRow;
void modifyCol(int c , int x){
ans += cntRow[c] * x;
cntCol[c] += x;
}
void modifyRow(int r , int x){
ans += cntCol[r] * x;
cntRow[r] += x;
}
void insert(int r , int c , int x){
int R = (row[r] ^= x) , C = (col[c] ^= x); val[{r , c}] ^= x;
modifyRow(R ^ x , -1) ; modifyCol(C ^ x , -1);
modifyRow(R , +1) ; modifyCol(C , +1);
}
int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
scanf("%lld%lld%lld" , &n , &k , &p); ans = n * n;
cntCol[0] = cntRow[0] = n;
for(int i = 1 , r , c , x ; i <= k ; i++){
scanf("%d%d%d" , &r , &c , &x);
insert(r , c , x);
}
for(int i = 1 , r1 , c1 , r2 , c2 ; i <= p ; i++){
scanf("%d%d%d%d" , &r1 , &c1 , &r2 , &c2);
ll v = val[{r1 , c1}];
insert(r1 , c1 , v);
insert(r2 , c2 , v);
printf("%lld\n" , n * n - ans);
}
return 0;
}
/*
*/
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |