#include "teams.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
const int N=500050;
const int M=40*N;
//namespace ST{
// int root,ls[M],rs[M],st[M],tsz;
// void Set(int&c,int ss,int se,int qs,int qe,int x){
// if(!c)c=++tsz;
// if(ss>qe||se<qs)return;
// if(qs<=ss&&se<=qe){st[c]=x;return;}
// int mid=ss+se>>1;
// Set(ls[c],ss,mid,qs,qe,x);
// Set(rs[c],mid+1,se,qs,qe,x);
// }
// int Get(int c,int ss,int se,int qi){
// if(ss==se)return st[c];
// int mid=ss+se>>1;
// if(qi<=mid)return max(st[c],Get(ls[c],ss,mid,qi));
// else return max(st[c],Get(rs[c],mid+1,se,qi));
// }
//}
int n,ls[M],rs[M],st[M],root[N],tsz;
void Set(int&c,int p,int ss,int se,int qi,int x){
c=++tsz;ls[c]=ls[p];rs[c]=rs[p];st[c]=st[p]+x;
if(ss==se)return;
int mid=ss+se>>1;
if(qi<=mid)Set(ls[c],ls[p],ss,mid,qi,x);
else Set(rs[c],rs[p],mid+1,se,qi,x);
}
int Get(int c,int p,int ss,int se,int qs,int qe){
if(qs>qe||ss>qe||se<qs)return 0;
if(qs<=ss&&se<=qe)return st[c]-st[p];
int mid=ss+se>>1;
return Get(ls[c],ls[p],ss,mid,qs,qe)+Get(rs[c],rs[p],mid+1,se,qs,qe);
}
vector<int> Qs[N];
void init(int N,int A[],int B[]) {
n=N;
for(int i=0;i<n;i++)Qs[A[i]].pb(B[i]);
for(int i=1;i<=n;i++){
root[i]=root[i-1];
for(int x:Qs[i])Set(root[i],root[i],1,n,x,1);
}
}
int cnt[N];
int can(int M,int K[]) {
ll s=0;
for(int i=0;i<M;i++)s+=K[i];
if(s>n)return 0;
vector<int> val;
for(int i=0;i<M;i++)val.pb(K[i]),cnt[K[i]]++;
sort(val.begin(),val.end());
val.erase(unique(val.begin(),val.end()),val.end());
int sz=val.size(),nroot=++tsz;
vector<ll> rem(sz);
for(int i=0;i<sz;i++){
int v=val[i];
ll need=(ll)v*cnt[v];
for(int j=i;j<sz;j++){
int nxt=(j==sz-1?n:val[j+1]-1);
ll x=min(need,Get(root[v],nroot,1,n,val[j],nxt)-rem[j]);
need-=x; rem[j]+=x;
if(need==0)break;
//Set(nroot,1,n,val[j],);
}
if(need>0){
for(int x:val)cnt[x]=0;
return 0;
}
}
for(int x:val)cnt[x]=0;
return 1;
}
Compilation message
teams.cpp: In function 'void Set(int&, int, int, int, int, int)':
teams.cpp:32:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
32 | int mid=ss+se>>1;
| ~~^~~
teams.cpp: In function 'int Get(int, int, int, int, int, int)':
teams.cpp:39:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
39 | int mid=ss+se>>1;
| ~~^~~
teams.cpp: In function 'void init(int, int*, int*)':
teams.cpp:44:15: warning: declaration of 'N' shadows a global declaration [-Wshadow]
44 | void init(int N,int A[],int B[]) {
| ~~~~^
teams.cpp:7:11: note: shadowed declaration is here
7 | const int N=500050;
| ^
teams.cpp: In function 'int can(int, int*)':
teams.cpp:54:13: warning: declaration of 'M' shadows a global declaration [-Wshadow]
54 | int can(int M,int K[]) {
| ~~~~^
teams.cpp:8:11: note: shadowed declaration is here
8 | const int M=40*N;
| ^
teams.cpp:62:17: warning: conversion from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' may change value [-Wconversion]
62 | int sz=val.size(),nroot=++tsz;
| ~~~~~~~~^~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
11980 KB |
Output is correct |
2 |
Correct |
6 ms |
11980 KB |
Output is correct |
3 |
Correct |
6 ms |
11980 KB |
Output is correct |
4 |
Correct |
6 ms |
11980 KB |
Output is correct |
5 |
Correct |
6 ms |
11980 KB |
Output is correct |
6 |
Correct |
6 ms |
12108 KB |
Output is correct |
7 |
Correct |
6 ms |
11980 KB |
Output is correct |
8 |
Correct |
6 ms |
11980 KB |
Output is correct |
9 |
Correct |
6 ms |
11980 KB |
Output is correct |
10 |
Correct |
6 ms |
11980 KB |
Output is correct |
11 |
Correct |
6 ms |
11980 KB |
Output is correct |
12 |
Correct |
6 ms |
11980 KB |
Output is correct |
13 |
Correct |
6 ms |
11980 KB |
Output is correct |
14 |
Correct |
6 ms |
12052 KB |
Output is correct |
15 |
Correct |
7 ms |
12080 KB |
Output is correct |
16 |
Correct |
6 ms |
12056 KB |
Output is correct |
17 |
Correct |
6 ms |
11980 KB |
Output is correct |
18 |
Correct |
7 ms |
12064 KB |
Output is correct |
19 |
Correct |
6 ms |
11980 KB |
Output is correct |
20 |
Correct |
6 ms |
12060 KB |
Output is correct |
21 |
Correct |
6 ms |
11980 KB |
Output is correct |
22 |
Correct |
6 ms |
12060 KB |
Output is correct |
23 |
Correct |
7 ms |
11980 KB |
Output is correct |
24 |
Correct |
6 ms |
12064 KB |
Output is correct |
25 |
Correct |
6 ms |
11980 KB |
Output is correct |
26 |
Correct |
7 ms |
12056 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
46 ms |
35820 KB |
Output is correct |
2 |
Correct |
51 ms |
35780 KB |
Output is correct |
3 |
Correct |
50 ms |
35772 KB |
Output is correct |
4 |
Correct |
54 ms |
36788 KB |
Output is correct |
5 |
Correct |
34 ms |
34628 KB |
Output is correct |
6 |
Correct |
33 ms |
34624 KB |
Output is correct |
7 |
Correct |
33 ms |
34632 KB |
Output is correct |
8 |
Correct |
33 ms |
34624 KB |
Output is correct |
9 |
Correct |
32 ms |
34112 KB |
Output is correct |
10 |
Correct |
33 ms |
33788 KB |
Output is correct |
11 |
Correct |
34 ms |
34852 KB |
Output is correct |
12 |
Correct |
37 ms |
33688 KB |
Output is correct |
13 |
Correct |
37 ms |
35068 KB |
Output is correct |
14 |
Correct |
39 ms |
34436 KB |
Output is correct |
15 |
Correct |
46 ms |
35640 KB |
Output is correct |
16 |
Correct |
45 ms |
35652 KB |
Output is correct |
17 |
Correct |
35 ms |
34948 KB |
Output is correct |
18 |
Correct |
35 ms |
35100 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
88 ms |
36204 KB |
Output is correct |
2 |
Correct |
99 ms |
36200 KB |
Output is correct |
3 |
Correct |
139 ms |
39532 KB |
Output is correct |
4 |
Correct |
53 ms |
36804 KB |
Output is correct |
5 |
Correct |
58 ms |
35080 KB |
Output is correct |
6 |
Correct |
53 ms |
34976 KB |
Output is correct |
7 |
Correct |
50 ms |
35108 KB |
Output is correct |
8 |
Correct |
52 ms |
35068 KB |
Output is correct |
9 |
Correct |
34 ms |
34084 KB |
Output is correct |
10 |
Correct |
36 ms |
34104 KB |
Output is correct |
11 |
Correct |
70 ms |
35148 KB |
Output is correct |
12 |
Correct |
1088 ms |
34000 KB |
Output is correct |
13 |
Correct |
257 ms |
35604 KB |
Output is correct |
14 |
Correct |
181 ms |
37756 KB |
Output is correct |
15 |
Correct |
76 ms |
36228 KB |
Output is correct |
16 |
Correct |
72 ms |
36152 KB |
Output is correct |
17 |
Correct |
59 ms |
35388 KB |
Output is correct |
18 |
Correct |
54 ms |
35392 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
471 ms |
144996 KB |
Output is correct |
2 |
Correct |
457 ms |
145056 KB |
Output is correct |
3 |
Correct |
623 ms |
152864 KB |
Output is correct |
4 |
Correct |
341 ms |
146108 KB |
Output is correct |
5 |
Correct |
203 ms |
139028 KB |
Output is correct |
6 |
Correct |
205 ms |
139028 KB |
Output is correct |
7 |
Correct |
188 ms |
139024 KB |
Output is correct |
8 |
Correct |
205 ms |
138880 KB |
Output is correct |
9 |
Correct |
151 ms |
133988 KB |
Output is correct |
10 |
Correct |
157 ms |
138420 KB |
Output is correct |
11 |
Correct |
1683 ms |
138300 KB |
Output is correct |
12 |
Correct |
3285 ms |
138488 KB |
Output is correct |
13 |
Correct |
944 ms |
146260 KB |
Output is correct |
14 |
Correct |
715 ms |
155880 KB |
Output is correct |
15 |
Correct |
348 ms |
150692 KB |
Output is correct |
16 |
Correct |
347 ms |
150700 KB |
Output is correct |
17 |
Correct |
212 ms |
145148 KB |
Output is correct |
18 |
Correct |
207 ms |
145132 KB |
Output is correct |