Submission #230586

#TimeUsernameProblemLanguageResultExecution timeMemory
230586soroushTopovi (COCI15_topovi)C++14
6 / 120
2092 ms46240 KiB
    #include <map>
    #include <iostream>
     
    using namespace std;
     
    typedef long long ll;
    typedef pair<int  ,int > pii;

    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+=(cntstn[str[x]] + cntstr[stn[y]]);
    	ans+=ll(str[x]!=stn[y]);
    	cntstr[str[x]]--;
    	cntstn[stn[y]]--;
    	str[x]^=w;
    	stn[y]^=w;
    	cntstr[str[x]]++;
    	cntstn[stn[y]]++;
    	ans-=ll(str[x]!=stn[y]);
    	ans-=(cntstn[str[x]] + cntstr[stn[y]]);
    }
     
    int main(){
        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 , y3;
    		cin >> x1 >> y1 >> x2 >> y3;
    		int val = rook[{x1 , y1}];
    		add(x1 , y1 , val);
    		add(x2 , y3 , val);
    		cout << ans << endl;
    	}
        return(0);
    }
#Verdict Execution timeMemoryGrader output
Fetching results...