Submission #69838

#TimeUsernameProblemLanguageResultExecution timeMemory
69838FedericoSJousting tournament (IOI12_tournament)C++14
49 / 100
1071 ms2556 KiB
#include <iostream> #include <vector> #include <assert.h> using namespace std; typedef pair<int,int> pii; int RT[4000005]; int inizio[400005],fine[400005]; pii ans; int P; int converti(int k){ int res=0; for(int i=0;i<k+1;) if(RT[res++]) i++; return res-1; } void elimina(int x, int y){ for(int i=x;i<=y;i++) RT[i]=0; } int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) { for(int i=0;i<400005;i++) RT[i]=1; 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<C;i++) for(int j=S[i];j<E[i]-1;j++) if(K[j]>R){ S[i]=E[i]=-1; break; } 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...