250322026-02-17 14:42:39999KörJáték (50 pont)cpp17Accepted 50/5016ms2036 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
#define int long long
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

signed main() {
    int n;cin>>n;
    vector<int> v(n),pos(n),tav1(n),tav2(n);
    for(int i = 0;i<n;i++){
        cin>>v[i];
        pos[--v[i]]=i;
    }
    for(int i = 0;i<n-1;i++){
        tav1[i]=(pos[i+1]-pos[i]>=0?pos[i+1]-pos[i]:pos[i+1]-pos[i]+n);
        if(i<n-2)tav2[i]=(pos[i+2]-pos[i]>=0?pos[i+2]-pos[i]:pos[i+2]-pos[i]+n);
    }
    vector<int> preftav1(n);
    preftav1[0]=tav1[0];
    for(int i = 1;i<n;i++){
        preftav1[i]=preftav1[i-1]+tav1[i];
    }
    for(int i = 0;i<n;i++){
        int cost=0;
        int voltszek=v[i];
        if(voltszek==n-1){
            cout<<preftav1[n-2]<<' ';
            continue;
        }
        if(voltszek>1){
            cost+=preftav1[voltszek-2];
        }
        if(voltszek>0){
            cost+=tav2[voltszek-1];
        }
        if(voltszek<n-2){
            cost+=preftav1[n-2]-preftav1[voltszek];
        }
        cost+=(i-pos[n-1]>=0?i-pos[n-1]:i-pos[n-1]+n);
        cout<<cost<<' ';
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms508 KiB
2Accepted0/01ms316 KiB
3Accepted0/01ms316 KiB
4Accepted2/21ms508 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/21ms384 KiB
11Accepted2/21ms316 KiB
12Accepted2/21ms404 KiB
13Accepted2/22ms512 KiB
14Accepted2/21ms316 KiB
15Accepted2/22ms316 KiB
16Accepted1/11ms508 KiB
17Accepted2/214ms1844 KiB
18Accepted2/214ms1868 KiB
19Accepted2/214ms1612 KiB
20Accepted2/214ms1844 KiB
21Accepted2/214ms2036 KiB
22Accepted2/214ms1844 KiB
23Accepted2/214ms1844 KiB
24Accepted2/214ms1844 KiB
25Accepted2/214ms1860 KiB
26Accepted2/214ms1844 KiB
27Accepted2/216ms1876 KiB
28Accepted2/214ms1844 KiB
29Accepted1/114ms1860 KiB