답안 #407210

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
407210 2021-05-18T16:05:34 Z LptN21 Topovi (COCI15_topovi) C++14
6 / 120
1234 ms 33160 KB
#include <bits/stdc++.h>
using namespace std;
#define fastIO ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
#define FF first
#define SS second
#define pb push_back
#define sz(x) (int)x.size()
#define oo 1e9
#define eps 1e-9
#define PI acos(-1.0)
#define lb lower_bound
#define ub upper_bound
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> ii;
const int N = 1e5+7, M=13+7;
const int MOD = 1e9+7;

int n, m, k, t;
ll ans=0;
map<int, int> rx, cx;
map<int, int> slr, slc;
map<ii, int> rook;

void mv(int r, int c, int v) {
    ans-=n-slr[cx[c]], ans-=n-slc[rx[r]];
    if(rx[r]!=cx[c]) ans+=1;
    slr[rx[r]]--, slc[cx[c]]--;
    rx[r]^=v, cx[c]^=v;
    slr[rx[r]]++, slc[cx[c]]++;
    ans+=n-slr[cx[c]], ans+=n-slc[rx[r]];
    if(rx[r]!=cx[c]) ans-=1;
    rook[ii(r, c)]^=v;
}

signed main() {
    //freopen("test.inp", "r", stdin);
    //freopen("test.out", "w", stdout);
    //fastIO;
    scanf("%d%d%d", &t, &n, &m);
    int x, y, u, v;slr[0]=slc[0]=n;
    for(int i=1;i<=n;i++) {
        scanf("%d%d%d", &x, &y, &k);
        mv(x, y, k);
    }
    for(int w, i=1;i<=m;i++) {
        scanf("%d%d%d%d", &x, &y, &u, &v);
        w=rook[ii(x, y)];
        mv(x, y, w), mv(u, v, w);
        printf("%lld\n", ans);
    }
    return 0;
}
/* stuff you should look for
    - int overflow, array bounds
    - special cases (n=1?)
    - do smth instead of do nothing and stay organized
    - WRITE STUFF DOWN
    - DONT JUST STICK ON ONE APPROACH
*/

Compilation message

topovi.cpp: In function 'int main()':
topovi.cpp:40:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |     scanf("%d%d%d", &t, &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~
topovi.cpp:43:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   43 |         scanf("%d%d%d", &x, &y, &k);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~
topovi.cpp:47:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |         scanf("%d%d%d%d", &x, &y, &u, &v);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Correct 1 ms 204 KB Output is correct
3 Incorrect 1 ms 204 KB Output isn't correct
4 Incorrect 1 ms 204 KB Output isn't correct
5 Incorrect 1 ms 204 KB Output isn't correct
6 Incorrect 136 ms 5184 KB Output isn't correct
7 Incorrect 110 ms 4728 KB Output isn't correct
8 Incorrect 87 ms 3916 KB Output isn't correct
9 Incorrect 88 ms 3908 KB Output isn't correct
10 Incorrect 99 ms 4012 KB Output isn't correct
11 Incorrect 1201 ms 32812 KB Output isn't correct
12 Incorrect 1234 ms 33156 KB Output isn't correct
13 Incorrect 1184 ms 33008 KB Output isn't correct
14 Incorrect 1193 ms 32984 KB Output isn't correct
15 Incorrect 1223 ms 33052 KB Output isn't correct
16 Incorrect 1224 ms 32824 KB Output isn't correct
17 Incorrect 1208 ms 32976 KB Output isn't correct
18 Incorrect 1201 ms 33160 KB Output isn't correct
19 Incorrect 1207 ms 32972 KB Output isn't correct
20 Incorrect 1203 ms 32884 KB Output isn't correct