Submission #1237844

#TimeUsernameProblemLanguageResultExecution timeMemory
1237844guanexJousting tournament (IOI12_tournament)C++20
49 / 100
1093 ms3516 KiB
#include<bits/stdc++.h> using namespace std; int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) { vector<int> pref(N+1); vector<int> suff(N+1); vector<int> knights; int defeat = 0; for(int i = 0; i < N-1; ++i){ if(K[i] > R){ defeat++; pref[i]++; suff[i]++; } } vector<pair<int, int>> x; for(int i = 0; i < N; ++i){ pref[i+1] += pref[i]; suff[N-i-1] += suff[N-i]; x.push_back({i, i}); } vector<int> sweep(N+1); for(int i = 0; i < C; ++i){ int l = x[S[i]].first; int r = x[E[i]].second; x.erase(x.begin()+S[i], x.begin()+E[i]+1); x.insert(x.begin() + S[i], {l, r}); if(l > 0){ if(pref[l-1] + suff[r] >= defeat){ sweep[l]++; sweep[r+1]--; } }else{ if(suff[r] >= defeat){ sweep[l]++; sweep[r+1]--; } } } int ans = -1; int act = 0; int pos = 0; for(int i = 0; i <= N-1; ++i){ act += sweep[i]; if(act > ans){ ans = act; pos = i; } } return pos; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...