Submission #1237799

#TimeUsernameProblemLanguageResultExecution timeMemory
1237799guanexJousting tournament (IOI12_tournament)C++20
17 / 100
1097 ms584 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){
    int mx = -1;
    for(int i = e.first; i <= e.second; ++i){
      mx = max(mx, x[i]);
    }
    if(mx == rank){
      ans++;
    }
    for(int i = e.second; i >= e.first; --i){
      if(x[i] == mx)continue;
      x.erase(x.begin() + i);
    }
    /*cout << j << " " << e.first << " " << e.second << endl;
    for(auto e:x){
      cout << e << " ";
    }
    cout << endl;*/
  }
  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...