#include <bits/stdc++.h>
#define ll long long
#define db long double
#define II pair <int,int>
#define III pair <ll,II>
#define IV pair <vector <int>,vector <int> >
#define TII pair <treap*,treap*>
#define fst first
#define snd second
#define BIT(x,i) ((x>>i)&1)
#define pi acos(-1)
#define to_radian(x) (x*pi/180.0)
#define to_degree(x) (x*180.0/pi)
#define Log(x) (31-__builtin_clz((int)x))
#define LogLL(x) (63-__builtin_clzll((ll)x))
#include "teams.h"
using namespace std;
struct Persistent
{
Persistent *l,*r;
int sum=0;
void comp() { sum=l->sum+r->sum; }
} *ver[500005];
Persistent *build(Persistent *u,int l,int r)
{
u=new Persistent();
if(l==r) return u;
int mid=(l+r)>>1;
u->l=build(u->l,l,mid); u->r=build(u->r,mid+1,r);
return u;
}
Persistent *update(Persistent *u,int l,int r,int x)
{
Persistent *v=new Persistent();
v->l=u->l;
v->r=u->r;
v->sum=u->sum;
if(l==r) v->sum++;
else
{
int mid=(l+r)>>1;
if(x<=mid) v->l=update(u->l,l,mid,x);
else v->r=update(u->r,mid+1,r,x);
v->comp();
}
return v;
}
int st[4*500005];
Persistent *lz[4*500005];
void change(int id,Persistent *x)
{
lz[id]=x;
st[id]=x->sum;
}
void down(int id)
{
Persistent *x=lz[id];
if(x==NULL) return ;
change(id*2,x->l); change(id*2+1,x->r);
lz[id]=NULL;
}
void updateIT(int id,int l,int r,int u,int v,Persistent *x)
{
if(u>r || v<l) return ;
if(u<=l && r<=v) { change(id,x); return ; }
down(id);
int mid=(l+r)>>1;
updateIT(id*2,l,mid,u,v,x->l); updateIT(id*2+1,mid+1,r,u,v,x->r);
st[id]=st[id*2]+st[id*2+1];
}
int getIT(int id,int l,int r,int u,int v,Persistent *x)
{
if(u>r || v<l) return 0;
if(u<=l && r<=v) return x->sum-st[id];
down(id);
int mid=(l+r)>>1;
return getIT(id*2,l,mid,u,v,x->l)+getIT(id*2+1,mid+1,r,u,v,x->r);
}
int Find(int id,int l,int r,Persistent *x,int k)
{
if(l==r) return l;
down(id);
int mid=(l+r)>>1,t=x->l->sum-st[id*2];
if(t>=k) return Find(id*2,l,mid,x->l,k);
return Find(id*2+1,mid+1,r,x->r,k-t);
}
int n,m,i,a[500005],b[500005],cnt,Endn[500005],q,inST[500005],Begin[500005];
vector <int> vec[500005];
void init(int _n,int _a[],int _b[])
{
n=_n;
vector <II> VecB;
for(i=0;i<n;i++) VecB.push_back({ _b[i],i });
sort(VecB.begin(),VecB.end());
for(II x:VecB)
{
inST[x.snd]=++cnt;
if(Begin[x.fst]==0) Begin[x.fst]=cnt;
}
for(i=n;i>=1;i--)
if(Begin[i]==0) Begin[i]=Begin[i+1];
cnt=0;
for(i=0;i<n;i++) vec[_a[i]].push_back(inST[i]);
ver[0]=build(ver[0],1,n);
for(i=1;i<=n;i++)
{
for(int x:vec[i]) cnt++,ver[cnt]=update(ver[cnt-1],1,n,x);
Endn[i]=cnt;
}
}
int can(int m,int _a[])
{
for(i=m;i>=1;i--) a[i]=_a[i-1];
sort(a+1,a+m+1);
updateIT(1,1,n,1,n,ver[0]);
for(i=1;i<=m;i++)
{
Persistent *u=ver[Endn[a[i]]];
if(Begin[a[i]]==0) return 0;
int k=getIT(1,1,n,1,Begin[a[i]]-1,u);
if(getIT(1,1,n,1,n,u)<a[i]+k)
return 0;
int pos=Find(1,1,n,u,a[i]+k);
updateIT(1,1,n,Begin[a[i]],pos,u);
}
return 1;
}
/*
int main()
{
freopen("teams.inp","r",stdin);
freopen("teams.out","w",stdout);
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n;
for(i=0;i<n;i++) cin>>a[i]>>b[i];
init(n,a,b);
cin>>q;
while(q--)
{
cin>>m;
for(i=0;i<m;i++) cin>>a[i];
cout<<can(m,a)<<'\n';
}
}
*/
Compilation message
teams.cpp: In function 'int can(int, int*)':
teams.cpp:115:13: warning: declaration of 'm' shadows a global declaration [-Wshadow]
115 | int can(int m,int _a[])
| ~~~~^
teams.cpp:91:7: note: shadowed declaration is here
91 | int n,m,i,a[500005],b[500005],cnt,Endn[500005],q,inST[500005],Begin[500005];
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
23132 KB |
Output is correct |
2 |
Correct |
4 ms |
23132 KB |
Output is correct |
3 |
Correct |
4 ms |
23132 KB |
Output is correct |
4 |
Correct |
5 ms |
23128 KB |
Output is correct |
5 |
Correct |
4 ms |
23128 KB |
Output is correct |
6 |
Correct |
5 ms |
23132 KB |
Output is correct |
7 |
Correct |
4 ms |
23128 KB |
Output is correct |
8 |
Correct |
4 ms |
23132 KB |
Output is correct |
9 |
Correct |
4 ms |
23132 KB |
Output is correct |
10 |
Correct |
4 ms |
23132 KB |
Output is correct |
11 |
Correct |
4 ms |
23132 KB |
Output is correct |
12 |
Correct |
5 ms |
23128 KB |
Output is correct |
13 |
Correct |
4 ms |
23132 KB |
Output is correct |
14 |
Correct |
4 ms |
23132 KB |
Output is correct |
15 |
Correct |
4 ms |
23288 KB |
Output is correct |
16 |
Correct |
4 ms |
23132 KB |
Output is correct |
17 |
Correct |
4 ms |
23204 KB |
Output is correct |
18 |
Correct |
4 ms |
23168 KB |
Output is correct |
19 |
Correct |
5 ms |
23132 KB |
Output is correct |
20 |
Correct |
4 ms |
23132 KB |
Output is correct |
21 |
Correct |
4 ms |
23132 KB |
Output is correct |
22 |
Correct |
4 ms |
23224 KB |
Output is correct |
23 |
Correct |
4 ms |
23132 KB |
Output is correct |
24 |
Correct |
5 ms |
23140 KB |
Output is correct |
25 |
Correct |
4 ms |
23132 KB |
Output is correct |
26 |
Correct |
5 ms |
23132 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
119 ms |
91708 KB |
Output is correct |
2 |
Correct |
115 ms |
89780 KB |
Output is correct |
3 |
Correct |
127 ms |
89724 KB |
Output is correct |
4 |
Correct |
120 ms |
92100 KB |
Output is correct |
5 |
Correct |
82 ms |
90552 KB |
Output is correct |
6 |
Correct |
82 ms |
90384 KB |
Output is correct |
7 |
Correct |
83 ms |
88368 KB |
Output is correct |
8 |
Correct |
80 ms |
88352 KB |
Output is correct |
9 |
Correct |
97 ms |
90316 KB |
Output is correct |
10 |
Correct |
84 ms |
90808 KB |
Output is correct |
11 |
Correct |
75 ms |
90812 KB |
Output is correct |
12 |
Correct |
80 ms |
91064 KB |
Output is correct |
13 |
Correct |
100 ms |
91576 KB |
Output is correct |
14 |
Correct |
97 ms |
89944 KB |
Output is correct |
15 |
Correct |
116 ms |
90552 KB |
Output is correct |
16 |
Correct |
114 ms |
91064 KB |
Output is correct |
17 |
Correct |
85 ms |
91488 KB |
Output is correct |
18 |
Correct |
89 ms |
91468 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
119 ms |
90040 KB |
Output is correct |
2 |
Correct |
130 ms |
92088 KB |
Output is correct |
3 |
Correct |
284 ms |
95152 KB |
Output is correct |
4 |
Correct |
115 ms |
90040 KB |
Output is correct |
5 |
Correct |
168 ms |
91132 KB |
Output is correct |
6 |
Correct |
143 ms |
90796 KB |
Output is correct |
7 |
Correct |
86 ms |
88860 KB |
Output is correct |
8 |
Correct |
131 ms |
90948 KB |
Output is correct |
9 |
Correct |
98 ms |
90444 KB |
Output is correct |
10 |
Correct |
132 ms |
91364 KB |
Output is correct |
11 |
Correct |
145 ms |
91644 KB |
Output is correct |
12 |
Correct |
187 ms |
91808 KB |
Output is correct |
13 |
Correct |
319 ms |
92460 KB |
Output is correct |
14 |
Correct |
310 ms |
95108 KB |
Output is correct |
15 |
Correct |
143 ms |
91672 KB |
Output is correct |
16 |
Correct |
139 ms |
91516 KB |
Output is correct |
17 |
Correct |
123 ms |
92428 KB |
Output is correct |
18 |
Correct |
123 ms |
92264 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
828 ms |
393636 KB |
Output is correct |
2 |
Correct |
778 ms |
395708 KB |
Output is correct |
3 |
Correct |
1329 ms |
403756 KB |
Output is correct |
4 |
Correct |
754 ms |
393960 KB |
Output is correct |
5 |
Correct |
605 ms |
391256 KB |
Output is correct |
6 |
Correct |
582 ms |
391444 KB |
Output is correct |
7 |
Correct |
436 ms |
385324 KB |
Output is correct |
8 |
Correct |
541 ms |
391280 KB |
Output is correct |
9 |
Correct |
516 ms |
390648 KB |
Output is correct |
10 |
Correct |
578 ms |
393964 KB |
Output is correct |
11 |
Correct |
694 ms |
394608 KB |
Output is correct |
12 |
Correct |
868 ms |
395632 KB |
Output is correct |
13 |
Correct |
1358 ms |
398696 KB |
Output is correct |
14 |
Correct |
1435 ms |
407392 KB |
Output is correct |
15 |
Correct |
740 ms |
399644 KB |
Output is correct |
16 |
Correct |
729 ms |
399432 KB |
Output is correct |
17 |
Correct |
563 ms |
398028 KB |
Output is correct |
18 |
Correct |
563 ms |
397968 KB |
Output is correct |