250322026-02-17 14:42:39999KörJáték (50 pont)cpp17Elfogadva 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<<' ';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms508 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/01ms316 KiB
4Elfogadva2/21ms508 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms384 KiB
11Elfogadva2/21ms316 KiB
12Elfogadva2/21ms404 KiB
13Elfogadva2/22ms512 KiB
14Elfogadva2/21ms316 KiB
15Elfogadva2/22ms316 KiB
16Elfogadva1/11ms508 KiB
17Elfogadva2/214ms1844 KiB
18Elfogadva2/214ms1868 KiB
19Elfogadva2/214ms1612 KiB
20Elfogadva2/214ms1844 KiB
21Elfogadva2/214ms2036 KiB
22Elfogadva2/214ms1844 KiB
23Elfogadva2/214ms1844 KiB
24Elfogadva2/214ms1844 KiB
25Elfogadva2/214ms1860 KiB
26Elfogadva2/214ms1844 KiB
27Elfogadva2/216ms1876 KiB
28Elfogadva2/214ms1844 KiB
29Elfogadva1/114ms1860 KiB