# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
81209 |
2018-10-24T05:48:47 Z |
cki86201 |
Seats (IOI18_seats) |
C++11 |
|
3874 ms |
77716 KB |
#include "seats.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <iostream>
#include <functional>
#include <unordered_set>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define Fi first
#define Se second
#define pb(x) push_back(x)
#define szz(x) (int)x.size()
#define rep(i,n) for(int i=0;i<n;i++)
#define all(x) x.begin(),x.end()
typedef tuple<int, int, int> t3;
int T[1<<21], A[1<<21], cnt[1<<21];
int R[1000010], C[1000010];
int N, M, P;
void init(int rt, int l, int r) {
cnt[rt] = r - l + 1;
if(l == r) return;
int m = (l + r) >> 1;
init(rt<<1, l, m);
init(rt<<1|1, m+1, r);
}
inline void pushup(int rt) {
if(T[rt<<1] == T[rt<<1|1]) cnt[rt] = cnt[rt<<1] + cnt[rt<<1|1], T[rt] = T[rt<<1];
else if(T[rt<<1] < T[rt<<1|1]) cnt[rt] = cnt[rt<<1], T[rt] = T[rt<<1];
else cnt[rt] = cnt[rt<<1|1], T[rt] = T[rt<<1|1];
}
void add(int rt, int l, int r, int s, int e, int c) {
if(s <= l && r <= e) {
T[rt] += c;
A[rt] += c;
return;
}
if(A[rt]) {
T[rt<<1] += A[rt];
A[rt<<1] += A[rt];
T[rt<<1|1] += A[rt];
A[rt<<1|1] += A[rt];
A[rt] = 0;
}
int m = (l + r) >> 1;
if(s <= m) add(rt<<1, l, m, s, e, c);
if(m < e) add(rt<<1|1, m+1, r, s, e, c);
pushup(rt);
}
void add(int l, int r, int v) {
add(1, 1, P, l, r, v);
}
int rval[1000010];
void get_val(int x, int y, int rr[]) {
int rz = 0;
for(int dx : {0,1}) for(int dy : {0,1}) {
int ni = x + dx, nj = y + dy, val = P + 1;
if(1 <= ni && ni <= N && 1 <= nj && nj <= M) {
val = rval[(ni-1)*M+(nj-1)];
}
rr[rz++] = val;
}
sort(rr, rr+4);
}
void give_initial_chart(int H, int W, std::vector<int> tR, std::vector<int> tC) {
N = H; M = W;
P = N * M;
init(1, 1, P);
rep(i, P) R[i + 1] = tR[i] + 1, C[i + 1] = tC[i] + 1;
for(int i=1;i<=P;i++) rval[(R[i]-1)*M+(C[i]-1)] = i;
rep(i, N+1) rep(j, M+1) {
int tt[4];
get_val(i, j, tt);
if(tt[0]<tt[1]) add(tt[0], tt[1]-1, 1);
if(tt[2]<tt[3]) add(tt[2], tt[3]-1, 100);
}
}
void change(int r, int c, int x) {
for(int dx:{-1,0}) for(int dy:{-1,0}) {
int tt[4];
get_val(r+dx, c+dy, tt);
if(tt[0]<tt[1]) add(tt[0], tt[1]-1, -1);
if(tt[2]<tt[3]) add(tt[2], tt[3]-1, -100);
}
rval[(r-1)*M+(c-1)] = x;
for(int dx:{-1,0}) for(int dy:{-1,0}) {
int tt[4];
get_val(r+dx, c+dy, tt);
if(tt[0]<tt[1]) add(tt[0], tt[1]-1, 1);
if(tt[2]<tt[3]) add(tt[2], tt[3]-1, 100);
}
}
int swap_seats(int a, int b) {
++a; ++b;
change(R[a], C[a], b);
change(R[b], C[b], a);
swap(R[a], R[b]);
swap(C[a], C[b]);
return cnt[1];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
504 KB |
Output is correct |
2 |
Correct |
22 ms |
700 KB |
Output is correct |
3 |
Correct |
35 ms |
700 KB |
Output is correct |
4 |
Correct |
24 ms |
700 KB |
Output is correct |
5 |
Correct |
19 ms |
700 KB |
Output is correct |
6 |
Correct |
32 ms |
824 KB |
Output is correct |
7 |
Correct |
33 ms |
824 KB |
Output is correct |
8 |
Correct |
31 ms |
824 KB |
Output is correct |
9 |
Correct |
29 ms |
892 KB |
Output is correct |
10 |
Correct |
32 ms |
1012 KB |
Output is correct |
11 |
Correct |
30 ms |
1012 KB |
Output is correct |
12 |
Correct |
19 ms |
1080 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
504 KB |
Output is correct |
2 |
Correct |
22 ms |
700 KB |
Output is correct |
3 |
Correct |
35 ms |
700 KB |
Output is correct |
4 |
Correct |
24 ms |
700 KB |
Output is correct |
5 |
Correct |
19 ms |
700 KB |
Output is correct |
6 |
Correct |
32 ms |
824 KB |
Output is correct |
7 |
Correct |
33 ms |
824 KB |
Output is correct |
8 |
Correct |
31 ms |
824 KB |
Output is correct |
9 |
Correct |
29 ms |
892 KB |
Output is correct |
10 |
Correct |
32 ms |
1012 KB |
Output is correct |
11 |
Correct |
30 ms |
1012 KB |
Output is correct |
12 |
Correct |
19 ms |
1080 KB |
Output is correct |
13 |
Correct |
76 ms |
1780 KB |
Output is correct |
14 |
Correct |
91 ms |
1808 KB |
Output is correct |
15 |
Correct |
51 ms |
1808 KB |
Output is correct |
16 |
Correct |
34 ms |
1808 KB |
Output is correct |
17 |
Correct |
62 ms |
1984 KB |
Output is correct |
18 |
Correct |
57 ms |
1984 KB |
Output is correct |
19 |
Correct |
56 ms |
2044 KB |
Output is correct |
20 |
Correct |
44 ms |
2300 KB |
Output is correct |
21 |
Correct |
39 ms |
2368 KB |
Output is correct |
22 |
Correct |
36 ms |
2552 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2451 ms |
53824 KB |
Output is correct |
2 |
Correct |
1196 ms |
54116 KB |
Output is correct |
3 |
Correct |
1132 ms |
54116 KB |
Output is correct |
4 |
Correct |
874 ms |
54116 KB |
Output is correct |
5 |
Correct |
1002 ms |
54116 KB |
Output is correct |
6 |
Correct |
880 ms |
54116 KB |
Output is correct |
7 |
Correct |
1016 ms |
54264 KB |
Output is correct |
8 |
Correct |
1101 ms |
54264 KB |
Output is correct |
9 |
Correct |
1201 ms |
54328 KB |
Output is correct |
10 |
Correct |
1101 ms |
54456 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
69 ms |
54456 KB |
Output is correct |
2 |
Correct |
186 ms |
54456 KB |
Output is correct |
3 |
Correct |
964 ms |
54472 KB |
Output is correct |
4 |
Correct |
2503 ms |
54472 KB |
Output is correct |
5 |
Correct |
856 ms |
54472 KB |
Output is correct |
6 |
Correct |
2143 ms |
54472 KB |
Output is correct |
7 |
Correct |
903 ms |
54472 KB |
Output is correct |
8 |
Correct |
1242 ms |
54796 KB |
Output is correct |
9 |
Correct |
1106 ms |
54796 KB |
Output is correct |
10 |
Correct |
1002 ms |
54796 KB |
Output is correct |
11 |
Correct |
922 ms |
54796 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
62 ms |
54796 KB |
Output is correct |
2 |
Correct |
117 ms |
54796 KB |
Output is correct |
3 |
Correct |
178 ms |
54796 KB |
Output is correct |
4 |
Correct |
225 ms |
54796 KB |
Output is correct |
5 |
Correct |
385 ms |
54796 KB |
Output is correct |
6 |
Correct |
1391 ms |
55184 KB |
Output is correct |
7 |
Correct |
1779 ms |
55184 KB |
Output is correct |
8 |
Correct |
1335 ms |
55312 KB |
Output is correct |
9 |
Correct |
3271 ms |
55312 KB |
Output is correct |
10 |
Correct |
1266 ms |
55312 KB |
Output is correct |
11 |
Correct |
1316 ms |
55312 KB |
Output is correct |
12 |
Correct |
1265 ms |
55312 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
504 KB |
Output is correct |
2 |
Correct |
22 ms |
700 KB |
Output is correct |
3 |
Correct |
35 ms |
700 KB |
Output is correct |
4 |
Correct |
24 ms |
700 KB |
Output is correct |
5 |
Correct |
19 ms |
700 KB |
Output is correct |
6 |
Correct |
32 ms |
824 KB |
Output is correct |
7 |
Correct |
33 ms |
824 KB |
Output is correct |
8 |
Correct |
31 ms |
824 KB |
Output is correct |
9 |
Correct |
29 ms |
892 KB |
Output is correct |
10 |
Correct |
32 ms |
1012 KB |
Output is correct |
11 |
Correct |
30 ms |
1012 KB |
Output is correct |
12 |
Correct |
19 ms |
1080 KB |
Output is correct |
13 |
Correct |
76 ms |
1780 KB |
Output is correct |
14 |
Correct |
91 ms |
1808 KB |
Output is correct |
15 |
Correct |
51 ms |
1808 KB |
Output is correct |
16 |
Correct |
34 ms |
1808 KB |
Output is correct |
17 |
Correct |
62 ms |
1984 KB |
Output is correct |
18 |
Correct |
57 ms |
1984 KB |
Output is correct |
19 |
Correct |
56 ms |
2044 KB |
Output is correct |
20 |
Correct |
44 ms |
2300 KB |
Output is correct |
21 |
Correct |
39 ms |
2368 KB |
Output is correct |
22 |
Correct |
36 ms |
2552 KB |
Output is correct |
23 |
Correct |
2451 ms |
53824 KB |
Output is correct |
24 |
Correct |
1196 ms |
54116 KB |
Output is correct |
25 |
Correct |
1132 ms |
54116 KB |
Output is correct |
26 |
Correct |
874 ms |
54116 KB |
Output is correct |
27 |
Correct |
1002 ms |
54116 KB |
Output is correct |
28 |
Correct |
880 ms |
54116 KB |
Output is correct |
29 |
Correct |
1016 ms |
54264 KB |
Output is correct |
30 |
Correct |
1101 ms |
54264 KB |
Output is correct |
31 |
Correct |
1201 ms |
54328 KB |
Output is correct |
32 |
Correct |
1101 ms |
54456 KB |
Output is correct |
33 |
Correct |
69 ms |
54456 KB |
Output is correct |
34 |
Correct |
186 ms |
54456 KB |
Output is correct |
35 |
Correct |
964 ms |
54472 KB |
Output is correct |
36 |
Correct |
2503 ms |
54472 KB |
Output is correct |
37 |
Correct |
856 ms |
54472 KB |
Output is correct |
38 |
Correct |
2143 ms |
54472 KB |
Output is correct |
39 |
Correct |
903 ms |
54472 KB |
Output is correct |
40 |
Correct |
1242 ms |
54796 KB |
Output is correct |
41 |
Correct |
1106 ms |
54796 KB |
Output is correct |
42 |
Correct |
1002 ms |
54796 KB |
Output is correct |
43 |
Correct |
922 ms |
54796 KB |
Output is correct |
44 |
Correct |
62 ms |
54796 KB |
Output is correct |
45 |
Correct |
117 ms |
54796 KB |
Output is correct |
46 |
Correct |
178 ms |
54796 KB |
Output is correct |
47 |
Correct |
225 ms |
54796 KB |
Output is correct |
48 |
Correct |
385 ms |
54796 KB |
Output is correct |
49 |
Correct |
1391 ms |
55184 KB |
Output is correct |
50 |
Correct |
1779 ms |
55184 KB |
Output is correct |
51 |
Correct |
1335 ms |
55312 KB |
Output is correct |
52 |
Correct |
3271 ms |
55312 KB |
Output is correct |
53 |
Correct |
1266 ms |
55312 KB |
Output is correct |
54 |
Correct |
1316 ms |
55312 KB |
Output is correct |
55 |
Correct |
1265 ms |
55312 KB |
Output is correct |
56 |
Correct |
142 ms |
55312 KB |
Output is correct |
57 |
Correct |
321 ms |
55312 KB |
Output is correct |
58 |
Correct |
546 ms |
55312 KB |
Output is correct |
59 |
Correct |
1920 ms |
73940 KB |
Output is correct |
60 |
Correct |
3806 ms |
77572 KB |
Output is correct |
61 |
Correct |
1797 ms |
77620 KB |
Output is correct |
62 |
Correct |
1439 ms |
77716 KB |
Output is correct |
63 |
Correct |
3874 ms |
77716 KB |
Output is correct |
64 |
Correct |
2133 ms |
77716 KB |
Output is correct |
65 |
Correct |
1919 ms |
77716 KB |
Output is correct |
66 |
Correct |
2131 ms |
77716 KB |
Output is correct |
67 |
Correct |
2024 ms |
77716 KB |
Output is correct |
68 |
Correct |
1463 ms |
77716 KB |
Output is correct |
69 |
Correct |
3218 ms |
77716 KB |
Output is correct |