Submission #539163

# Submission time Handle Problem Language Result Execution time Memory
539163 2022-03-18T14:05:58 Z Soul234 Topovi (COCI15_topovi) C++14
120 / 120
1464 ms 39484 KB
#include<bits/stdc++.h>
using namespace std;

void DBG() { cerr << "]\n"; }
template<class H, class... T> void DBG(H h, T... t) {
    cerr << h; if(sizeof...(t)) cerr << ", ";
    DBG(t...);
}
#ifdef LOCAL
#define dbg(...) cerr << "[" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
#else
#define dbg(...) 0
#endif // LOCAL

#define FOR(i,a,b) for(int i = (a) ; i<(b) ; i++)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for(int i = (b)-1 ; i>=(a) ; i--)
#define R0F(i,a) ROF(i,0,a)
#define each(e,a) for(auto &e : (a))
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pb push_back
#define tcT template<class T
#define nl "\n"

using ll = long long;
using vi = vector<int>;
using pi = pair<int,int>;
using str = string;
tcT> using V = vector<T>;
tcT> using pqg = priority_queue<T,vector<T>,greater<T>>;

void setIO(string NAME = "") {
    cin.tie(0)->sync_with_stdio(0);
    if(sz(NAME)) {
        freopen((NAME + ".inp").c_str(),"r",stdin);
        freopen((NAME + ".out").c_str(),"w",stdout);
    }
}

int N, K, P;
ll ans = 0;
map<int,int> ccnt, rcnt, cxor, rxor;
map<pi, int> rook;

void modify(int x, int y, int val) {
    ans -= N - ccnt[rxor[x]];
    ans -= N - rcnt[cxor[y]];
    if(rxor[x] != cxor[y]) ans++;

    rcnt[rxor[x]]--;
    rxor[x] ^= val;
    rcnt[rxor[x]]++;

    ccnt[cxor[y]]--;
    cxor[y] ^= val;
    ccnt[cxor[y]]++;

    ans += N - ccnt[rxor[x]];
    ans += N - rcnt[cxor[y]];
    if(rxor[x] != cxor[y]) ans--;
    rook[{x,y}] ^= val;
}

void solve() {
    cin>>N>>K>>P;
    ccnt[0] = rcnt[0] = N;
    F0R(i,K) {
        int r,c,x;
        cin>>r>>c>>x;
        modify(r,c,x);
    }
    F0R(i,P) {
        int r1, c1, r2, c2;
        cin>>r1>>c1>>r2>>c2;
        int val = rook[{r1, c1}];
        modify(r1, c1, val);
        modify(r2, c2, val);
        cout << ans << nl;
    }
}

int main() {
    setIO();

    int t=1;
    //cin>>t;
    while(t-->0) {
        solve();
    }

    return 0;
}

Compilation message

topovi.cpp: In function 'void setIO(std::string)':
topovi.cpp:37:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |         freopen((NAME + ".inp").c_str(),"r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
topovi.cpp:38:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |         freopen((NAME + ".out").c_str(),"w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 320 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 131 ms 5968 KB Output is correct
7 Correct 128 ms 5352 KB Output is correct
8 Correct 92 ms 4432 KB Output is correct
9 Correct 82 ms 4516 KB Output is correct
10 Correct 101 ms 4656 KB Output is correct
11 Correct 1341 ms 39484 KB Output is correct
12 Correct 1464 ms 39384 KB Output is correct
13 Correct 1364 ms 39440 KB Output is correct
14 Correct 1393 ms 39364 KB Output is correct
15 Correct 1334 ms 39320 KB Output is correct
16 Correct 1313 ms 39372 KB Output is correct
17 Correct 1386 ms 39356 KB Output is correct
18 Correct 1380 ms 39368 KB Output is correct
19 Correct 1279 ms 39360 KB Output is correct
20 Correct 1296 ms 39452 KB Output is correct