#include "teams.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+5;
const int maxl = 25;
int n,lt[maxn],rt[maxn];
int tree[maxn*maxl],lc[maxn*maxl],rc[maxn*maxl],T=1;
void build(int l,int r,int id){
if(l==r) return;
lc[id]=++T;rc[id]=++T;
int mid=(l+r)>>1;
build(l,mid,lc[id]);build(mid+1,r,rc[id]);
}
int update(int l,int r,int id,int p){
if(l==r){
tree[++T]=tree[id]+1;
return T;
}
int mid=(l+r)>>1;
int cc=++T;
lc[cc]=lc[id];rc[cc]=rc[id];
if(p<=mid) lc[cc]=update(l,mid,lc[id],p);
else rc[cc]=update(mid+1,r,rc[id],p);
tree[cc]=tree[lc[cc]]+tree[rc[cc]];
return cc;
}
int query(int l,int r,int id,int p){
if(l==r) return tree[id];
int mid=(l+r)>>1;
if(p<=mid) return query(l,mid,lc[id],p)+tree[rc[id]];
else return query(mid+1,r,rc[id],p);
}
vector<int> e[maxn];
int root[maxn];
void init(int N, int A[], int B[]) {
for(int i=0;i<N;i++){
lt[B[i]]++;
rt[A[i]]++;
e[B[i]].push_back(A[i]);
}
for(int i=1;i<=N;i++) lt[i]+=lt[i-1];
for(int i=N;i>=1;i--) rt[i]+=rt[i+1];
n=N;
root[0]=1;
build(1,n,1);
for(int i=1;i<=N;i++){
root[i]=root[i-1];
for(int l:e[i]) root[i]=update(1,n,root[i],l);
}
}
int get(int l,int r){
if(l>r) return 0;
return query(1,n,root[r],l);
}
int can(int M, int K[]) {
vector<int> com;
for(int i=0;i<M;i++) com.push_back(K[i]);
sort(com.begin(),com.end());
com.erase(unique(com.begin(),com.end()),com.end());
int sz=(int)com.size();
vector<int> cnt(sz),d(sz);
for(int i=1;i<sz;i++) d[i]=get(com[i-1]+1,com[i]-1)+d[i-1];
for(int i=0;i<M;i++) cnt[lower_bound(com.begin(),com.end(),K[i])-com.begin()]++;
for(int i=0;i<sz;i++){
if(cnt[i]>n/com[i]) return 0;
cnt[i]*=com[i];
if(i) cnt[i]+=cnt[i-1];
if(cnt[i]>n) return 0;
}
for(int i=0;i<sz;i++) for(int j=i;j<sz;j++){
int num=n-(lt[com[i]-1]+rt[com[j]+1])-(d[j]-d[i]);
int val=(i?cnt[j]-cnt[i-1]:cnt[j]);
if(num<val) return 0;
}
return 1;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
20828 KB |
Output is correct |
2 |
Correct |
3 ms |
20828 KB |
Output is correct |
3 |
Correct |
3 ms |
20828 KB |
Output is correct |
4 |
Correct |
3 ms |
20828 KB |
Output is correct |
5 |
Correct |
3 ms |
20828 KB |
Output is correct |
6 |
Correct |
3 ms |
21020 KB |
Output is correct |
7 |
Correct |
3 ms |
20828 KB |
Output is correct |
8 |
Correct |
3 ms |
20828 KB |
Output is correct |
9 |
Incorrect |
3 ms |
20828 KB |
Output isn't correct |
10 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
32 ms |
48988 KB |
Output is correct |
2 |
Correct |
35 ms |
49012 KB |
Output is correct |
3 |
Correct |
33 ms |
48980 KB |
Output is correct |
4 |
Correct |
37 ms |
49928 KB |
Output is correct |
5 |
Correct |
18 ms |
47960 KB |
Output is correct |
6 |
Correct |
18 ms |
47792 KB |
Output is correct |
7 |
Incorrect |
19 ms |
47964 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
44 ms |
49244 KB |
Output is correct |
2 |
Correct |
45 ms |
49264 KB |
Output is correct |
3 |
Correct |
52 ms |
52308 KB |
Output is correct |
4 |
Correct |
34 ms |
49884 KB |
Output is correct |
5 |
Correct |
52 ms |
48212 KB |
Output is correct |
6 |
Correct |
42 ms |
48212 KB |
Output is correct |
7 |
Incorrect |
54 ms |
48324 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
310 ms |
161876 KB |
Output is correct |
2 |
Correct |
313 ms |
161876 KB |
Output is correct |
3 |
Correct |
318 ms |
167960 KB |
Output is correct |
4 |
Correct |
290 ms |
163024 KB |
Output is correct |
5 |
Correct |
213 ms |
155984 KB |
Output is correct |
6 |
Correct |
184 ms |
155980 KB |
Output is correct |
7 |
Incorrect |
210 ms |
155988 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |