# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
640001 |
2022-09-13T07:28:15 Z |
ggoh |
Teams (IOI15_teams) |
C++14 |
|
2932 ms |
168228 KB |
#include "teams.h"
#include<bits/stdc++.h>
using namespace std;
#define sz(v) ((int)(v).size())
typedef long long lint;
typedef pair<int,int> pii;
int n,sz;
vector<int>G[500005];
struct PST{
int l,r,val;
}T[11000000];
int root[500005];
void initree(int num,int s,int e)
{
if(s==e)return ;
T[num].l=sz;
T[sz++]={-1,-1,0};
T[num].r=sz;
T[sz++]={-1,-1,0};
initree(T[num].l,s,(s+e)/2);
initree(T[num].r,(s+e)/2+1,e);
}
void update(int par,int num,int s,int e,int x)
{
T[num].val=T[par].val+1;
if(s==e)return ;
if(x<=(s+e)/2)
{
T[num].r=T[par].r;
T[num].l=sz;
T[sz++]={-1,-1,0};
update(T[par].l,T[num].l,s,(s+e)/2,x);
}
else
{
T[num].l=T[par].l;
T[num].r=sz;
T[sz++]={-1,-1,0};
update(T[par].r,T[num].r,(s+e)/2+1,e,x);
}
}
struct D{
int A,B;
}d[500005];
int go[500005];
bool cmp(D a,D b){return a.B<b.B;}
void init(int N, int A[], int B[]) {
n=N;
for(int i=0;i<n;i++)
{
d[i]={A[i],B[i]};
go[i+1]=1e9;
}
sort(d,d+n,cmp);
for(int i=0;i<n;i++)
{
go[d[i].B]=min(go[d[i].B],i+1);
G[d[i].A].push_back(i+1);
}
for(int i=n-1;i>=1;i--)go[i]=min(go[i],go[i+1]);
root[0]=sz;
T[sz++]={-1,-1,0};
initree(0,1,n);
for(int i=1;i<=n;i++)
{
if(!sz(G[i]))
{
root[i]=root[i-1];
continue;
}
int prev=root[i-1];
for(auto &k:G[i])
{
root[i]=sz;
T[sz++]={-1,-1,0};
update(prev,root[i],1,n,k);
prev=root[i];
}
}
}
int getsum(int num1,int num2,int s,int e,int x1,int x2)
{
if(s>x2||x1>e)return 0;
if(x1<=s&&e<=x2)return T[num2].val-T[num1].val;
return getsum(T[num1].l,T[num2].l,s,(s+e)/2,x1,x2)+getsum(T[num1].r,T[num2].r,(s+e)/2+1,e,x1,x2);
}
int getx(int x1,int x2,int y1,int y2)
{
return getsum(root[y1-1],root[y2],1,n,x1,x2);
}
int rem[200002];
int can(int M, int K[]) {
lint sum=0;
for(int i=0;i<M;i++)sum+=K[i];
if(sum>n)return 0;
int ans=1,t;
sort(K,K+M);
t=K[0];
vector<pii>V;
for(int i=1;i<M;i++)
{
if(K[i]==K[i-1])
{
t+=K[i];
}
else
{
V.push_back({K[i-1],t});
t=K[i];
}
}
V.push_back({K[M-1],t});
int m=sz(V);
for(int i=0;i<m;i++)rem[i]=V[i].second;
for(int i=m-1;i>=0;i--)
{
int r=0;
for(int j=m-1;j>=i+1;j--)
{
if(!rem[j])continue;
t=getx(go[V[j].first],n,i==0?1:(V[i-1].first+1),V[i].first)-r;
if(rem[j]<t)t=rem[j];
r+=t;
rem[j]-=t;
}
t=getx(go[V[i].first],n,i==0?1:(V[i-1].first+1),V[i].first)-r;
if(rem[i]<t)t=rem[i];
rem[i]-=t;
}
for(int i=0;i<m;i++)if(rem[i])ans=0;
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
11988 KB |
Output is correct |
2 |
Correct |
6 ms |
11988 KB |
Output is correct |
3 |
Correct |
8 ms |
11988 KB |
Output is correct |
4 |
Correct |
7 ms |
11988 KB |
Output is correct |
5 |
Correct |
7 ms |
11988 KB |
Output is correct |
6 |
Correct |
6 ms |
12116 KB |
Output is correct |
7 |
Correct |
8 ms |
11988 KB |
Output is correct |
8 |
Correct |
6 ms |
11988 KB |
Output is correct |
9 |
Correct |
6 ms |
11988 KB |
Output is correct |
10 |
Correct |
6 ms |
11988 KB |
Output is correct |
11 |
Correct |
7 ms |
12032 KB |
Output is correct |
12 |
Correct |
6 ms |
12116 KB |
Output is correct |
13 |
Correct |
6 ms |
11988 KB |
Output is correct |
14 |
Correct |
7 ms |
11988 KB |
Output is correct |
15 |
Correct |
6 ms |
11980 KB |
Output is correct |
16 |
Correct |
6 ms |
11988 KB |
Output is correct |
17 |
Correct |
6 ms |
11988 KB |
Output is correct |
18 |
Correct |
6 ms |
11988 KB |
Output is correct |
19 |
Correct |
6 ms |
11988 KB |
Output is correct |
20 |
Correct |
7 ms |
11996 KB |
Output is correct |
21 |
Correct |
7 ms |
11988 KB |
Output is correct |
22 |
Correct |
6 ms |
11988 KB |
Output is correct |
23 |
Correct |
6 ms |
11988 KB |
Output is correct |
24 |
Correct |
7 ms |
11988 KB |
Output is correct |
25 |
Correct |
6 ms |
11988 KB |
Output is correct |
26 |
Correct |
6 ms |
11988 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
39240 KB |
Output is correct |
2 |
Correct |
74 ms |
39268 KB |
Output is correct |
3 |
Correct |
62 ms |
39240 KB |
Output is correct |
4 |
Correct |
67 ms |
39612 KB |
Output is correct |
5 |
Correct |
37 ms |
38100 KB |
Output is correct |
6 |
Correct |
41 ms |
38108 KB |
Output is correct |
7 |
Correct |
38 ms |
38108 KB |
Output is correct |
8 |
Correct |
40 ms |
38100 KB |
Output is correct |
9 |
Correct |
34 ms |
37956 KB |
Output is correct |
10 |
Correct |
33 ms |
37952 KB |
Output is correct |
11 |
Correct |
34 ms |
37964 KB |
Output is correct |
12 |
Correct |
37 ms |
38024 KB |
Output is correct |
13 |
Correct |
51 ms |
38220 KB |
Output is correct |
14 |
Correct |
52 ms |
38576 KB |
Output is correct |
15 |
Correct |
60 ms |
39116 KB |
Output is correct |
16 |
Correct |
62 ms |
39108 KB |
Output is correct |
17 |
Correct |
39 ms |
38052 KB |
Output is correct |
18 |
Correct |
39 ms |
37964 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
205 ms |
39664 KB |
Output is correct |
2 |
Correct |
190 ms |
39620 KB |
Output is correct |
3 |
Correct |
139 ms |
42620 KB |
Output is correct |
4 |
Correct |
61 ms |
39628 KB |
Output is correct |
5 |
Correct |
80 ms |
38412 KB |
Output is correct |
6 |
Correct |
94 ms |
38396 KB |
Output is correct |
7 |
Correct |
83 ms |
38468 KB |
Output is correct |
8 |
Correct |
93 ms |
38416 KB |
Output is correct |
9 |
Correct |
33 ms |
37952 KB |
Output is correct |
10 |
Correct |
36 ms |
38320 KB |
Output is correct |
11 |
Correct |
40 ms |
38332 KB |
Output is correct |
12 |
Correct |
1006 ms |
38604 KB |
Output is correct |
13 |
Correct |
191 ms |
38732 KB |
Output is correct |
14 |
Correct |
164 ms |
40908 KB |
Output is correct |
15 |
Correct |
87 ms |
39616 KB |
Output is correct |
16 |
Correct |
95 ms |
39684 KB |
Output is correct |
17 |
Correct |
60 ms |
38348 KB |
Output is correct |
18 |
Correct |
70 ms |
38332 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1086 ms |
162388 KB |
Output is correct |
2 |
Correct |
2673 ms |
162504 KB |
Output is correct |
3 |
Correct |
707 ms |
168228 KB |
Output is correct |
4 |
Correct |
466 ms |
162536 KB |
Output is correct |
5 |
Correct |
304 ms |
156120 KB |
Output is correct |
6 |
Correct |
382 ms |
156124 KB |
Output is correct |
7 |
Correct |
308 ms |
156072 KB |
Output is correct |
8 |
Correct |
408 ms |
156032 KB |
Output is correct |
9 |
Correct |
158 ms |
155332 KB |
Output is correct |
10 |
Correct |
157 ms |
155324 KB |
Output is correct |
11 |
Correct |
1573 ms |
155484 KB |
Output is correct |
12 |
Correct |
2932 ms |
155596 KB |
Output is correct |
13 |
Correct |
818 ms |
157068 KB |
Output is correct |
14 |
Correct |
700 ms |
164228 KB |
Output is correct |
15 |
Correct |
410 ms |
161020 KB |
Output is correct |
16 |
Correct |
448 ms |
161100 KB |
Output is correct |
17 |
Correct |
235 ms |
155748 KB |
Output is correct |
18 |
Correct |
245 ms |
155896 KB |
Output is correct |