답안 #886708

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
886708 2023-12-12T17:25:06 Z vjudge1 Doktor (COCI17_doktor) C++17
60 / 100
1000 ms 11864 KB
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;

const int MAXN = 5E5 + 5;

int mp[2 * MAXN];

#define ONLINE_JUDGE
void solve() {
    int n;
    cin >> n;

    vector <int> v(n +1);
    for(int i = 1; i <= n; i++) {
        cin >> v[i];
    }

    vector <int> pref(n +2), suf(n +2);
    for(int i = 1; i <= n; i++) {
        pref[i] = pref[i -1] + (v[i] == i);
    }

    for(int i = n; i >= 1; i--) {
        suf[i] = suf[i +1] + (v[i] == i);
    }

    vector <int> c(n +1);
    for(int i = 1; i <= n; i++) {
        c[i] = (v[i] - i) + 2 * i;
        //cerr << c[i] << " \n"[i == n];
    }

    array <int, 3> ans = {-1, 0, 0};
    for(int l = 1; l <= n; l++) {
        for(int r = l; r <= n; r++) {
            mp[c[r]]++;
            int calc = pref[l -1] + mp[r + l] + suf[r +1];
            //cerr << l << " " << r << " :: " << calc << " -> " << pref[l -1] << " " << mp[r + l] << " " << suf[r +1] << "\n";
            if(calc >= ans[0]) {
                ans = {calc, v[l], v[r]};
            }
        }

        for(int r = l; r <= n; r++) {
            mp[c[r]]--;
        }
    }

    cout << ans[1] << " " << ans[2];

    return;
}

signed main() {
    #ifndef ONLINE_JUDGE
        freopen("in.txt", "r", stdin);
        freopen("out.txt", "w", stdout);
    #endif

    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    int t = 1; //cin >> t;
    for(int i = 1; i <= t; i++) {
        solve();
    }

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 348 KB Output is correct
2 Correct 3 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 19 ms 572 KB Output is correct
2 Correct 5 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 51 ms 524 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 85 ms 680 KB Output is correct
2 Execution timed out 1044 ms 7004 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1048 ms 3932 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1012 ms 11864 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1051 ms 7004 KB Time limit exceeded
2 Halted 0 ms 0 KB -