153022025-02-18 09:38:18AblablablaKörJáték (50 pont)cpp17Elfogadva 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";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/01ms508 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms332 KiB
7Elfogadva2/21ms392 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva2/21ms380 KiB
12Elfogadva2/21ms508 KiB
13Elfogadva2/21ms316 KiB
14Elfogadva2/21ms316 KiB
15Elfogadva2/21ms316 KiB
16Elfogadva1/11ms400 KiB
17Elfogadva2/214ms1024 KiB
18Elfogadva2/214ms888 KiB
19Elfogadva2/214ms884 KiB
20Elfogadva2/214ms820 KiB
21Elfogadva2/214ms820 KiB
22Elfogadva2/214ms896 KiB
23Elfogadva2/214ms888 KiB
24Elfogadva2/214ms884 KiB
25Elfogadva2/214ms824 KiB
26Elfogadva2/214ms1056 KiB
27Elfogadva2/214ms888 KiB
28Elfogadva2/214ms820 KiB
29Elfogadva1/114ms820 KiB