# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
454553 |
2021-08-05T05:51:33 Z |
ftkbrian |
Seats (IOI18_seats) |
C++14 |
|
4000 ms |
56780 KB |
#include "seats.h"
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
#define pll pair<ll,ll>
#define f first
#define s second
vector<pll> X;
ll nm,inf = 1e9;
pll ST[2][4040404];
pll hp(pll a,pll b) { return {max(a.f,b.f),min(a.s,b.s)}; }
void upd(ll t,ll id,ll s,ll e,ll L,ll v) {
if(s > L || L > e) return;
if(s == e) { ST[t][id] = {v,v}; return; }
ll m = s+e>>1;
upd(t,id*2,s,m,L,v); upd(t,id*2+1,m+1,e,L,v);
ST[t][id] = hp(ST[t][id*2],ST[t][id*2+1]);
}
pll hap(ll t,ll dx,ll s,ll e,ll qs,ll qe) {
if(s > qe || e < qs) return {-inf,inf};
if(qs <= s && e <= qe) return ST[t][dx];
ll m = s+e>>1;
return hp(hap(t,dx*2,s,m,qs,qe),hap(t,dx*2+1,m+1,e,qs,qe));
}
void give_initial_chart(int H, int W, vector<int> r, vector<int> c) {
for(int i = 0 ; i < r.size() ; i++) X.push_back({r[i],c[i]});
nm = X.size();
for(int i = 0 ; i < nm ; i++) {
upd(0,1,0,nm-1,i,X[i].f);
upd(1,1,0,nm-1,i,X[i].s);
}
}
int swap_seats(int a, int b) {
swap(X[a],X[b]);
upd(0,1,0,nm-1,a,X[a].f);
upd(0,1,0,nm-1,b,X[b].f);
upd(1,1,0,nm-1,a,X[a].s);
upd(1,1,0,nm-1,b,X[b].s);
int s = 1,ret = 1;
while(s < nm) {
pll A = hap(0,1,0,nm-1,0,s);
pll B = hap(1,1,0,nm-1,0,s);
if((A.f-A.s+1)*(B.f-B.s+1) == s+1) ret++,s+=min(A.f-A.s+1,B.f-B.s+1);
else s = (A.f-A.s+1)*(B.f-B.s+1)-1;
}
return ret;
}
Compilation message
seats.cpp: In function 'void upd(ll, ll, ll, ll, ll, ll)':
seats.cpp:15:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
15 | ll m = s+e>>1;
| ^
seats.cpp: In function 'std::pair<int, int> hap(ll, ll, ll, ll, ll, ll)':
seats.cpp:22:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
22 | ll m = s+e>>1;
| ^
seats.cpp: In function 'void give_initial_chart(int, int, std::vector<int>, std::vector<int>)':
seats.cpp:26:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
26 | for(int i = 0 ; i < r.size() ; i++) X.push_back({r[i],c[i]});
| ~~^~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
332 KB |
Output is correct |
2 |
Correct |
7 ms |
332 KB |
Output is correct |
3 |
Correct |
6 ms |
332 KB |
Output is correct |
4 |
Correct |
7 ms |
380 KB |
Output is correct |
5 |
Correct |
59 ms |
332 KB |
Output is correct |
6 |
Correct |
6 ms |
380 KB |
Output is correct |
7 |
Correct |
9 ms |
352 KB |
Output is correct |
8 |
Correct |
12 ms |
376 KB |
Output is correct |
9 |
Correct |
12 ms |
332 KB |
Output is correct |
10 |
Correct |
6 ms |
332 KB |
Output is correct |
11 |
Correct |
7 ms |
364 KB |
Output is correct |
12 |
Correct |
57 ms |
360 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
332 KB |
Output is correct |
2 |
Correct |
7 ms |
332 KB |
Output is correct |
3 |
Correct |
6 ms |
332 KB |
Output is correct |
4 |
Correct |
7 ms |
380 KB |
Output is correct |
5 |
Correct |
59 ms |
332 KB |
Output is correct |
6 |
Correct |
6 ms |
380 KB |
Output is correct |
7 |
Correct |
9 ms |
352 KB |
Output is correct |
8 |
Correct |
12 ms |
376 KB |
Output is correct |
9 |
Correct |
12 ms |
332 KB |
Output is correct |
10 |
Correct |
6 ms |
332 KB |
Output is correct |
11 |
Correct |
7 ms |
364 KB |
Output is correct |
12 |
Correct |
57 ms |
360 KB |
Output is correct |
13 |
Correct |
24 ms |
1240 KB |
Output is correct |
14 |
Correct |
17 ms |
1156 KB |
Output is correct |
15 |
Correct |
19 ms |
1236 KB |
Output is correct |
16 |
Execution timed out |
4066 ms |
1176 KB |
Time limit exceeded |
17 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
948 ms |
56772 KB |
Output is correct |
2 |
Correct |
1041 ms |
56720 KB |
Output is correct |
3 |
Execution timed out |
4050 ms |
56764 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
1240 KB |
Output is correct |
2 |
Correct |
200 ms |
6628 KB |
Output is correct |
3 |
Execution timed out |
4078 ms |
56780 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
26 ms |
1328 KB |
Output is correct |
2 |
Correct |
40 ms |
1320 KB |
Output is correct |
3 |
Correct |
564 ms |
1316 KB |
Output is correct |
4 |
Execution timed out |
4059 ms |
1108 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
332 KB |
Output is correct |
2 |
Correct |
7 ms |
332 KB |
Output is correct |
3 |
Correct |
6 ms |
332 KB |
Output is correct |
4 |
Correct |
7 ms |
380 KB |
Output is correct |
5 |
Correct |
59 ms |
332 KB |
Output is correct |
6 |
Correct |
6 ms |
380 KB |
Output is correct |
7 |
Correct |
9 ms |
352 KB |
Output is correct |
8 |
Correct |
12 ms |
376 KB |
Output is correct |
9 |
Correct |
12 ms |
332 KB |
Output is correct |
10 |
Correct |
6 ms |
332 KB |
Output is correct |
11 |
Correct |
7 ms |
364 KB |
Output is correct |
12 |
Correct |
57 ms |
360 KB |
Output is correct |
13 |
Correct |
24 ms |
1240 KB |
Output is correct |
14 |
Correct |
17 ms |
1156 KB |
Output is correct |
15 |
Correct |
19 ms |
1236 KB |
Output is correct |
16 |
Execution timed out |
4066 ms |
1176 KB |
Time limit exceeded |
17 |
Halted |
0 ms |
0 KB |
- |