Submission #1237822

#TimeUsernameProblemLanguageResultExecution timeMemory
1237822caacrugonJousting tournament (IOI12_tournament)C++20
49 / 100
1093 ms3772 KiB
#include <bits/stdc++.h>
using namespace std;

int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) {
  int ans=0;
  vector<int> pMax(N+5,0),tmp(N+5,0),tmp2(N+5,0);
  vector<pair<int,int>> ln;
  int wins=0;
  for(int i=0;i<N-1;i++){
    if(K[i]>R){
      tmp[i+1]++;
      tmp2[i]++;
      wins++;
    }
  }
  for(int i=0;i<N;i++){
    tmp[i+1]+=tmp[i];
    tmp2[N-1-i]+=tmp2[N-i];
    ln.push_back({i,i});
  }
  for(int i=0;i<C;i++){
    int l=ln[S[i]].first;
    int r=ln[E[i]].second;
    ln.erase(ln.begin()+S[i],ln.begin()+E[i]+1);
    ln.insert(ln.begin()+S[i],{l,r});
    if(tmp[l]+tmp2[r]==wins){
      pMax[l]++;
      pMax[r+1]--;
    }
  }
  int mx=pMax[0],bestWins=pMax[0];
  for(int i=1;i<=N;i++){
    mx+=pMax[i];
    if(mx>bestWins){
      bestWins=mx;
      ans=i;
    }
  }
  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...