156182025-02-21 10:10:11ZsBalazsKörJáték (50 pont)cpp17Accepted 50/5045ms2448 KiB
#include <bits/stdc++.h>
using namespace std;

int n;

int calc(int honnan, int hova) {
    if (hova >= honnan) {
        return hova - honnan;
    } else {
        return n + hova - honnan;
    }
}

int main() {
	cin >> n;
	
	map<int, int> hol;
	vector<int> sor;
	
	for (int i = 0; n > i; i++) {
	    int temp;
	    cin >> temp;
	    
	    sor.push_back(temp);
	    hol[temp] = i;
	}
	
	int osszeg = 0;
	vector<int> reszek;
	    
    for (int j = 0; n > j; j++) {
        int nextSuly = sor[j] + 1;
        
        int hova;
        if (nextSuly == n+1) {
            reszek.push_back(0);
            continue;
        } else {
            hova = hol[nextSuly];
        }
        
        if (hova >= j) {
            reszek.push_back(hova - j);
            osszeg += hova - j;
        } else {
            reszek.push_back(n + hova - j);
            osszeg += n + hova - j;
        }
    }
	
	for (int i = 0; n > i; i++) { // Kit allitunk kozepre!
	    int enSulyom = sor[i];
	    
	    int currOsszeg = osszeg;
	    //cerr << "MOST:: " << i+1 << " " << currOsszeg << endl;
	   
	    currOsszeg -= reszek[i];
	    //cerr << currOsszeg << endl;
	    
	    if (enSulyom == n) {
	        int honnan = hol[n-1];
	        currOsszeg -= reszek[honnan];
	        currOsszeg += calc(honnan, i);
	    } else {
	        currOsszeg -= reszek[hol[n]];
	        currOsszeg += calc(hol[n], i);
	        
	        if (enSulyom-1 != 0) {
	            int honnan = hol[enSulyom-1];
    	        int hova = hol[enSulyom+1];
    	        currOsszeg -= reszek[honnan];
    	        currOsszeg += calc(honnan, hova);
	        }
	    }
	    
	    cout << currOsszeg << " ";
	}
	
	cout << endl;
	
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms508 KiB
3Accepted0/01ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms508 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/21ms508 KiB
11Accepted2/21ms316 KiB
12Accepted2/21ms508 KiB
13Accepted2/21ms316 KiB
14Accepted2/21ms316 KiB
15Accepted2/21ms316 KiB
16Accepted1/11ms508 KiB
17Accepted2/245ms2272 KiB
18Accepted2/245ms2236 KiB
19Accepted2/237ms2280 KiB
20Accepted2/229ms2244 KiB
21Accepted2/230ms2260 KiB
22Accepted2/228ms2356 KiB
23Accepted2/232ms2292 KiB
24Accepted2/229ms2320 KiB
25Accepted2/239ms2356 KiB
26Accepted2/237ms2448 KiB
27Accepted2/241ms2308 KiB
28Accepted2/241ms2356 KiB
29Accepted1/128ms2356 KiB