제출 #1237673

#제출 시각아이디문제언어결과실행 시간메모리
1237673luvlorndev마상시합 토너먼트 (IOI12_tournament)C++20
49 / 100
1093 ms3328 KiB
#include <bits/stdc++.h>
using namespace std;
int a[100001], s[100001], e[100001];
#define mp make_pair
#define pb push_back

int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) {
    vector<pair<int, int>> v;
    int buffcnt = 0;
    for (int i = 0; i < N - 1; i++) {
        if (K[i] > R) {
            s[i + 1]++;
            e[i]++;
            buffcnt++;
        }
    }
    for (int i = 0; i < N; i++) {
        s[i + 1] += s[i];
        e[N - 1 - i] += e[N - i];
        v.pb(mp(i, i));
    }
    for (int i = 0; i < C; i++) {
        int l = v[S[i]].first;
        int r = v[E[i]].second;
        v.erase(v.begin() + S[i], v.begin() + E[i] + 1);
        v.insert(v.begin() + S[i], mp(l, r));
        if (s[l] + e[r] == buffcnt) {
            a[l]++;
            a[r+1]--;
        }
    }
    int sum = a[0], mx = sum, bestpos = 0;
    for (int i = 1; i <= N; i++) {
        sum += a[i];
        if (sum > mx) {
            mx = sum;
            bestpos = i;
        }
    }
    return bestpos;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...