154292025-02-19 15:37:29antiKörJáték (50 pont)cpp17Accepted 50/5021ms1448 KiB
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct szam{
    int ert, ind, tav, tav2, veg;
};

bool comp(szam a, szam b){
    if(a.ert != b.ert){
        return a.ert < b.ert;
    }else{
        return a.ind < b.ind;
    }
}

int tav( int ind1, int ind2, int n){
    if(ind1 < ind2){
        return ind2 - ind1;
    }else{
        return n + ind2 - ind1;
    }
}

int main()
{
    int n;
    cin >> n;
    szam T[n];
    vector<int> I(n);

    for(int i=0; i<n; i++){
        cin >> T[i].ert;
        I[i] = T[i].ert - 1;
        T[i].ind = i+1;
    }
    sort(T, T+n, comp);
    int ossz = 0;
    for(int i=0; i<n; i++){
        T[i].veg = tav(T[n-1].ind, T[i].ind, n);
        T[i].tav = tav(T[i].ind, T[i+1].ind, n);
        T[i].tav2 = tav(T[i].ind, T[i+2].ind, n);
        ossz += T[i].tav;
    }
    ossz -= T[n-1].tav;

    for(int i : I){
        if(i == 0){
            cout << ossz - T[0].tav + T[0].veg << " ";
        }
        else if(i == n-1){
            cout << ossz << " ";
        }
        else{
            cout << ossz - T[i].tav - T[i-1].tav + T[i-1].tav2 + T[i].veg << " ";
        }
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms508 KiB
2Accepted0/01ms508 KiB
3Accepted0/01ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/21ms316 KiB
11Accepted2/21ms316 KiB
12Accepted2/21ms316 KiB
13Accepted2/21ms316 KiB
14Accepted2/21ms316 KiB
15Accepted2/21ms352 KiB
16Accepted1/11ms316 KiB
17Accepted2/219ms1356 KiB
18Accepted2/221ms1188 KiB
19Accepted2/217ms1088 KiB
20Accepted2/217ms1272 KiB
21Accepted2/217ms1100 KiB
22Accepted2/218ms1336 KiB
23Accepted2/217ms1332 KiB
24Accepted2/217ms1332 KiB
25Accepted2/218ms1336 KiB
26Accepted2/219ms1332 KiB
27Accepted2/219ms1448 KiB
28Accepted2/219ms1332 KiB
29Accepted1/117ms1332 KiB