153022025-02-18 09:38:18AblablablaKörJáték (50 pont)cpp17Accepted 50/5014ms1056 KiB
#include <bits/stdc++.h>

using namespace std;

int n;

int tav(int i, int j){
    if(i <= j){
        return j - i;
    } else{
        return n + j - i;
    }
}

int main()
{
    cin >> n;

    vector<int> index(n);
    vector<int> alap(n);
    for(int i = 0; i < n; i++){
        cin >> alap[i];
        alap[i]--;
        index[alap[i]] = i;
    }

    vector<int> allando(n);
    int ossz = 0;
    for(int i = 0; i < n - 1; i++){
        allando[i] = tav(index[i], index[i + 1]);
        ossz += allando[i];
    }

    for(int i = 0; i < n; i++){
        int kiesik = alap[i];

        int ans = ossz - (kiesik == 0 ? 0 : allando[kiesik - 1]) - (kiesik == n - 1 ? 0 : allando[kiesik]);

        if(kiesik == 0){
            ans += tav(index[n - 1], i);
        } else if(kiesik == n - 1){
            ans += tav(index[n - 2], i);
        } else{
            ans += tav(index[n - 1], i);
            ans += tav(index[kiesik - 1], index[kiesik + 1]);
        }

        cout << ans << " ";
    }
    cout << "\n";
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted0/01ms508 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms332 KiB
7Accepted2/21ms392 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/21ms316 KiB
11Accepted2/21ms380 KiB
12Accepted2/21ms508 KiB
13Accepted2/21ms316 KiB
14Accepted2/21ms316 KiB
15Accepted2/21ms316 KiB
16Accepted1/11ms400 KiB
17Accepted2/214ms1024 KiB
18Accepted2/214ms888 KiB
19Accepted2/214ms884 KiB
20Accepted2/214ms820 KiB
21Accepted2/214ms820 KiB
22Accepted2/214ms896 KiB
23Accepted2/214ms888 KiB
24Accepted2/214ms884 KiB
25Accepted2/214ms824 KiB
26Accepted2/214ms1056 KiB
27Accepted2/214ms888 KiB
28Accepted2/214ms820 KiB
29Accepted1/114ms820 KiB