# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
287352 |
2020-08-31T16:16:50 Z |
Namnamseo |
Teams (IOI15_teams) |
C++17 |
|
3328 ms |
98392 KB |
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <stack>
#include <algorithm>
#define all(x) (x).begin(), (x).end()
#define pb push_back
using namespace std;
typedef pair<int,int> pp;
stack<pp > st;
stack<int> left;
int n;
struct seg2d{
static const int M=524288;
vector<int> tree[M*2];
void addPoint(int x,int y){
y+=M;
while(y){
tree[y].pb(x);
y>>=1;
}
}
void init(){
int i;
for(i=1;i<2*M;++i) sort(all(tree[i]));
}
inline int get(int point,int x,int y){
return max(0,int(upper_bound(all(tree[point]),y) -
lower_bound(all(tree[point]),x)));
}
int query(int l,int r,int x,int y){
int ret=0;
x+=M; y+=M;
while(x<=y){
if(x==y){
ret += get(x,l,r); break;
}
if(x&1) ret+=get(x++,l,r);
if((y&1)==0) ret+=get(y--,l,r);
x>>=1; y>>=1;
}
return ret;
}
int get_over(int x1,int x2,int k){
int pos=1;
int cnt=0;
while(pos<M){
int l=pos*2, r=l+1;
int tmp=get(l,x1,x2);
if(cnt+tmp < k){
cnt += tmp;
pos=r;
} else pos=l;
}
return pos-M;
}
} seg;
void init(int N, int A[], int B[]) {
int i;
n=N;
for(i=0;i<N;++i) seg.addPoint(A[i],B[i]);
seg.init();
}
int can(int M, int K[]) {
sort(K,K+M);
int i;
while(st .size()) st .pop();
while(left.size()) left.pop();
st.push({0,n});
left.push(0);
for(i=0;i<M;++i){
int& x=K[i];
int curcnt=x, lasty=x-1;
for(;st.size()>1;){
auto t=st.top();
if(t.second < x){
st.pop(); left.pop();
continue;
}
int cnt=seg.query(t.first+1, x, lasty+1, t.second) + left.top();
if(curcnt <= cnt) {
break;
}
st.pop(); left.pop();
lasty = t.second;
curcnt -= cnt;
}
pp t=st.top();
if(seg.query(t.first+1, x, lasty+1, t.second) + left.top() < curcnt) return 0;
int R=min(t.second, seg.get_over(t.first+1, x, curcnt + seg.query(t.first+1, x, 0, lasty) ));
left.push(seg.query(st.top().first+1,x,lasty+1,R)-curcnt);
st.push({x,R});
}
return 1;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
24960 KB |
Output is correct |
2 |
Correct |
19 ms |
24960 KB |
Output is correct |
3 |
Correct |
18 ms |
24960 KB |
Output is correct |
4 |
Correct |
19 ms |
24960 KB |
Output is correct |
5 |
Correct |
19 ms |
24960 KB |
Output is correct |
6 |
Correct |
19 ms |
24960 KB |
Output is correct |
7 |
Correct |
21 ms |
24960 KB |
Output is correct |
8 |
Correct |
21 ms |
24960 KB |
Output is correct |
9 |
Correct |
20 ms |
24960 KB |
Output is correct |
10 |
Correct |
20 ms |
24960 KB |
Output is correct |
11 |
Correct |
19 ms |
24960 KB |
Output is correct |
12 |
Correct |
21 ms |
24960 KB |
Output is correct |
13 |
Correct |
20 ms |
24960 KB |
Output is correct |
14 |
Correct |
20 ms |
24960 KB |
Output is correct |
15 |
Correct |
19 ms |
24960 KB |
Output is correct |
16 |
Correct |
19 ms |
24960 KB |
Output is correct |
17 |
Correct |
19 ms |
24960 KB |
Output is correct |
18 |
Correct |
19 ms |
24960 KB |
Output is correct |
19 |
Correct |
20 ms |
24960 KB |
Output is correct |
20 |
Correct |
19 ms |
24960 KB |
Output is correct |
21 |
Correct |
20 ms |
24960 KB |
Output is correct |
22 |
Correct |
20 ms |
24960 KB |
Output is correct |
23 |
Correct |
20 ms |
24960 KB |
Output is correct |
24 |
Correct |
19 ms |
24960 KB |
Output is correct |
25 |
Correct |
20 ms |
24960 KB |
Output is correct |
26 |
Correct |
19 ms |
24960 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
225 ms |
38236 KB |
Output is correct |
2 |
Correct |
220 ms |
38364 KB |
Output is correct |
3 |
Correct |
223 ms |
38252 KB |
Output is correct |
4 |
Correct |
221 ms |
38620 KB |
Output is correct |
5 |
Correct |
123 ms |
34872 KB |
Output is correct |
6 |
Correct |
121 ms |
34740 KB |
Output is correct |
7 |
Correct |
119 ms |
34736 KB |
Output is correct |
8 |
Correct |
125 ms |
34736 KB |
Output is correct |
9 |
Correct |
79 ms |
33880 KB |
Output is correct |
10 |
Correct |
70 ms |
33764 KB |
Output is correct |
11 |
Correct |
64 ms |
34012 KB |
Output is correct |
12 |
Correct |
77 ms |
34292 KB |
Output is correct |
13 |
Correct |
156 ms |
34660 KB |
Output is correct |
14 |
Correct |
134 ms |
36488 KB |
Output is correct |
15 |
Correct |
197 ms |
38116 KB |
Output is correct |
16 |
Correct |
199 ms |
38244 KB |
Output is correct |
17 |
Correct |
85 ms |
34892 KB |
Output is correct |
18 |
Correct |
90 ms |
34900 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
235 ms |
38760 KB |
Output is correct |
2 |
Correct |
239 ms |
38748 KB |
Output is correct |
3 |
Correct |
712 ms |
41948 KB |
Output is correct |
4 |
Correct |
219 ms |
38624 KB |
Output is correct |
5 |
Correct |
398 ms |
35116 KB |
Output is correct |
6 |
Correct |
370 ms |
35040 KB |
Output is correct |
7 |
Correct |
127 ms |
34992 KB |
Output is correct |
8 |
Correct |
305 ms |
34900 KB |
Output is correct |
9 |
Correct |
79 ms |
34392 KB |
Output is correct |
10 |
Correct |
103 ms |
34004 KB |
Output is correct |
11 |
Correct |
111 ms |
34004 KB |
Output is correct |
12 |
Correct |
173 ms |
33972 KB |
Output is correct |
13 |
Correct |
543 ms |
34816 KB |
Output is correct |
14 |
Correct |
892 ms |
40004 KB |
Output is correct |
15 |
Correct |
383 ms |
38628 KB |
Output is correct |
16 |
Correct |
387 ms |
38628 KB |
Output is correct |
17 |
Correct |
304 ms |
35276 KB |
Output is correct |
18 |
Correct |
243 ms |
35260 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1323 ms |
92560 KB |
Output is correct |
2 |
Correct |
1322 ms |
92760 KB |
Output is correct |
3 |
Correct |
2827 ms |
98392 KB |
Output is correct |
4 |
Correct |
1304 ms |
92780 KB |
Output is correct |
5 |
Correct |
1522 ms |
73180 KB |
Output is correct |
6 |
Correct |
1425 ms |
72952 KB |
Output is correct |
7 |
Correct |
572 ms |
73040 KB |
Output is correct |
8 |
Correct |
1241 ms |
73180 KB |
Output is correct |
9 |
Correct |
347 ms |
68704 KB |
Output is correct |
10 |
Correct |
342 ms |
68896 KB |
Output is correct |
11 |
Correct |
391 ms |
68864 KB |
Output is correct |
12 |
Correct |
576 ms |
69012 KB |
Output is correct |
13 |
Correct |
2032 ms |
71908 KB |
Output is correct |
14 |
Correct |
3328 ms |
94328 KB |
Output is correct |
15 |
Correct |
1528 ms |
89300 KB |
Output is correct |
16 |
Correct |
1514 ms |
90200 KB |
Output is correct |
17 |
Correct |
869 ms |
79016 KB |
Output is correct |
18 |
Correct |
842 ms |
78116 KB |
Output is correct |