Submission #230574

#TimeUsernameProblemLanguageResultExecution timeMemory
230574soroushTopovi (COCI15_topovi)C++14
6 / 120
2094 ms45792 KiB
    #include <bits/stdc++.h>
     
    using namespace std;
     
    typedef long long ll;
    typedef long double ld;
    typedef pair<int  ,int > pii;
     
    mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
     
    const ll maxn  = 1e6+100;
    const ll mod =1e9+7;
    const ld PI = acos((ld)-1);
     
    #define pb(x) push_back(x);
    #define endl '\n'
    #define dokme(x) return(cout << x , 0);
    #define migmig ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    #define ms(x , y) memset(x , y , sizeof x);
    #define file_init freopen("input.txt", "r+", stdin); freopen("output.txt", "w+", stdout);
    ll pw(ll a, ll b, ll md = mod){ll res = 1;while(b){if(b&1){res=(a*res)%md;}a=(a*a)%md;b>>=1;}return(res);}
     
    map < int , int > cntstr  , cntstn;
    map < pii , int > rook;
    map < int , int > str , stn; 
    ll ans = 0;
    int n , k , p;
     
    void add(int x ,int y , int w){
    	rook[{x , y}]^=w;
    	ans-=n - cntstn[str[x]];
    	ans+=int(str[x]!=stn[y]);
    	ans -= n - cntstr[stn[y]];
    	cntstr[str[x]]--;
    	cntstn[stn[y]]--;
    	str[x]^=w;
    	stn[y]^=w;
    	cntstr[str[x]]++;
    	cntstn[stn[y]]++;
    	ans-=int(str[x]!=stn[y]);
    	ans += n - cntstn[str[x]];
    	ans += n - cntstr[stn[y]];
    }
     
    int main(){
        migmig
        cin >> n >> k >> p;
        cntstr[0] = cntstn[0] = n;
        for(int i = 0 ; i < n; i ++){
    		int x , y;
    		cin >> x >> y;
    		int w;
    		cin >> w;
    		add(x , y , w);
    	}
        while(p--){
    		int x1 , y1 , x2 , y2;
    		cin >> x1 >> y1 >> x2 >> y2;
    		int val = rook[{x1 , y1}];
    		add(x1 , y1 , val);
    		add(x2 , y2 , val);
    		cout << ans << endl;
    	}
        return(0);
    }
#Verdict Execution timeMemoryGrader output
Fetching results...