#include <iostream>
#include <vector>
#include <assert.h>
#include <set>
using namespace std;
typedef pair<int,int> pii;
int N;
int RT[4000005];
int inizio[400005],fine[400005];
pii ans;
int P;
set<int> Q;
int query(int k, int l, int r, int a){
if(l==r)
return l;
int m=(l+r)/2;
if(a<=RT[2*k])
return query(2*k, l, m, a);
else
return query(2*k+1, m+1, r, a-RT[2*k]);
}
void update(int k, int l, int r, int a, int b){
if(b<l or r<a) return;
if(a<=l and r<=b){
RT[k]=0;
return;
}
int m=(l+r)/2;
update(2*k, l, m, a, b);
update(2*k+1, m+1, r, a, b);
RT[k]=RT[2*k]+RT[2*k+1];
}
void costruisci(int k, int l, int r){
if(l==r){
RT[k]=1;
return;
}
int m=(l+r)/2;
costruisci(2*k,l,m);
costruisci(2*k+1,m+1,r);
RT[k]=RT[2*k]+RT[2*k+1];
}
int converti(int k){
//sto cercando il k+1-esimo 1-based
return query(1, 0, N, k+1);
}
void elimina(int x, int y){
update(1, 0, N, x, y);
return;
}
int GetBestPosition(int N_, int C, int R, int *K, int *S, int *E) {
N=N_;
costruisci(1, 0, N);
//for(int i=0;i<14;i++)cout<<RT[i]<<" ";cout<<endl;
for(int i=0;i<C;i++){
S[i]=converti(S[i]);
E[i]=converti(E[i]+1);
elimina(S[i]+1,E[i]-1);
//for(int i=0;i<14;i++)cout<<RT[i]<<" ";cout<<endl<<S[i]<<" "<<E[i]<<endl;
}
for(int i=0;i<N-1;i++)
if(K[i]>R)
Q.insert(i);
for(int i=0;i<C;i++)
if(*Q.lower_bound(S[i])<E[i]-1)
S[i]=E[i]=-1;
for(int i=0;i<C;i++)
if(S[i]!=-1){
inizio[S[i]]++;
fine[E[i]]++;
}
for(int pos=0;pos<N;pos++){
P+=inizio[pos];
P-=fine[pos];
ans=max(ans,{P,-pos});
}
return -ans.second;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
248 KB |
Output is correct |
2 |
Correct |
3 ms |
488 KB |
Output is correct |
3 |
Correct |
4 ms |
488 KB |
Output is correct |
4 |
Correct |
4 ms |
488 KB |
Output is correct |
5 |
Correct |
3 ms |
596 KB |
Output is correct |
6 |
Correct |
3 ms |
596 KB |
Output is correct |
7 |
Correct |
4 ms |
648 KB |
Output is correct |
8 |
Correct |
3 ms |
664 KB |
Output is correct |
9 |
Correct |
3 ms |
672 KB |
Output is correct |
10 |
Correct |
4 ms |
672 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
672 KB |
Output is correct |
2 |
Correct |
6 ms |
868 KB |
Output is correct |
3 |
Correct |
4 ms |
868 KB |
Output is correct |
4 |
Correct |
8 ms |
912 KB |
Output is correct |
5 |
Correct |
7 ms |
912 KB |
Output is correct |
6 |
Correct |
6 ms |
912 KB |
Output is correct |
7 |
Correct |
8 ms |
1220 KB |
Output is correct |
8 |
Correct |
9 ms |
1224 KB |
Output is correct |
9 |
Correct |
4 ms |
1292 KB |
Output is correct |
10 |
Correct |
8 ms |
1292 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
40 ms |
3552 KB |
Output is correct |
2 |
Correct |
105 ms |
8904 KB |
Output is correct |
3 |
Correct |
24 ms |
8904 KB |
Output is correct |
4 |
Correct |
95 ms |
10740 KB |
Output is correct |
5 |
Correct |
100 ms |
12132 KB |
Output is correct |
6 |
Correct |
67 ms |
12132 KB |
Output is correct |
7 |
Correct |
96 ms |
14900 KB |
Output is correct |
8 |
Correct |
126 ms |
17188 KB |
Output is correct |
9 |
Correct |
52 ms |
17912 KB |
Output is correct |
10 |
Correct |
39 ms |
17912 KB |
Output is correct |