249002026-02-16 17:02:27GergoszaboRendező robot (80 pont)cpp17Accepted 80/8076ms6448 KiB
#include <iostream>
#include <bits/stdc++.h>
using ll = long long;
using namespace std;

const int INF = 1e9;

ll keplet(ll a, ll b){
    if (a > b) return min(a, b)*2 + (a-b)*2-1;
    return min(a, b)*2 + abs(a-b)*2;
}

int main()
{
    int n; cin >> n;
    vector<ll> v(n+1, 0);
    for (int i = 1; i <= n; i++){
        cin >> v[i];
    }
    vector<ll> pos(n+1, 0);
    for (int i = 1; i <= n; i++){
        pos[v[i]] = i;
    }
    vector<ll> last(n+1, 0);
    last[n] = n;
    for (int i = n-1; i >= 1; i--){
        if (pos[i] < pos[i+1]) last[i] = last[i+1];
        else last[i] = i;
    }
    ll ans = INF;
    for (int i = 1; i <= n; i++){
        ll a = v[i]-1;
        ll b = n - last[v[i]];
        if (keplet(a, b) < ans) ans = keplet(a, b);
    }
    cout << ans;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base80/80
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/21ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/32ms316 KiB
6Accepted2/23ms316 KiB
7Accepted2/22ms316 KiB
8Accepted2/22ms316 KiB
9Accepted2/22ms316 KiB
10Accepted2/22ms340 KiB
11Accepted2/22ms316 KiB
12Accepted2/21ms316 KiB
13Accepted2/22ms500 KiB
14Accepted2/21ms316 KiB
15Accepted2/21ms316 KiB
16Accepted2/21ms316 KiB
17Accepted2/22ms316 KiB
18Accepted4/475ms6296 KiB
19Accepted4/476ms6312 KiB
20Accepted4/475ms6312 KiB
21Accepted4/474ms6312 KiB
22Accepted4/474ms6188 KiB
23Accepted4/472ms6196 KiB
24Accepted4/475ms6308 KiB
25Accepted4/475ms6200 KiB
26Accepted4/474ms6200 KiB
27Accepted4/476ms6196 KiB
28Accepted4/475ms6448 KiB
29Accepted4/472ms6316 KiB