제출 #1237796

#제출 시각아이디문제언어결과실행 시간메모리
1237796guanex마상시합 토너먼트 (IOI12_tournament)C++20
0 / 100
0 ms320 KiB

#include<bits/stdc++.h>

using namespace std;

int check(int j, int rank, vector<int> &knights, vector<pair<int, int>> &query){
  vector<int> x;
  for(int i = 0; i < j; ++i){
    x.push_back(knights[i]);
  }
  x.push_back(rank);
  for(int i = j; i < (int)knights.size(); ++i){
    x.push_back(knights[i]);
  }
  int ans = 0;
  for(auto e:query){
    vector<int> nx;
    for(int i = 0; i < e.first; ++i){
      nx.push_back(x[i]);
    }
    int mx = -1;
    for(int i = e.first; i <= e.second; ++i){
      mx = max(mx, x[i]);
    }
    if(mx == rank){
      ans++;
    }
    nx.push_back(mx);
    for(int i = e.second+1; i < (int)x.size(); ++i){
      nx.push_back(x[i]);
    }
  }
  return ans;
}

int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) {
  vector<pair<int, int>> x;
  int lk = R;
  vector<int> knights;
  for(int i = 0; i < N-1; ++i){
    knights.push_back(K[i]);
  }
  for(int i = 0; i < C; ++i){
    x.push_back({S[i], E[i]});
  }
  int ans = -1;
  int pos = 0;
  for(int i = 0; i < N-1; ++i){
    int an = check(i, lk, knights, x);
    if(an > ans){
      ans = an;
      pos = i;
    }
  }
  return pos;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...