제출 #1237820

#제출 시각아이디문제언어결과실행 시간메모리
1237820caacrugon마상시합 토너먼트 (IOI12_tournament)C++20
17 / 100
1094 ms608 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,bestWins=-1;
  for(int i=0;i<N;i++){
    vector<int> ln(K,K+(N-1));
    ln.push_back(0);
    int tmp=R,tmp2=-1;
    for(int j=i;j<ln.size();j++){
      if(tmp2==-1){
        tmp2=ln[j];
        ln[j]=tmp;
      }else{
        tmp=ln[j];
        ln[j]=tmp2;
        tmp2=-1;
      }
    }
    vector<pair<int,int>> v;
    for(int j=0;j<N;j++)v.push_back({j,j});
    int wins=0;
    for(int j=0;j<C;j++){
      int pMax=wins+(C-(j+1));
      if(pMax<=bestWins)break;
      int l=v[S[j]].first;
      int r=v[E[j]].second;
      v.erase(v.begin()+S[j],v.begin()+E[j]+1);
      v.insert(v.begin()+S[j],{l,r});
      int mx=0;
      for(int k=l;k<=r;k++)mx=max(mx,ln[k]);
      if(mx==R)wins++;
    }
    if(wins>bestWins){
      bestWins=wins;
      ans=i;
    }
  }
  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...