113342024-08-18 20:19:30kukkermanKörJáték (50 pont)cpp17Accepted 50/5017ms1272 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

std::vector<int> beolvas(std::istream &be) {
    int n;
    be >> n;

    std::vector<int> sorszam(n);
    for (auto &x : sorszam) {
        be >> x;
    }

    return sorszam;
}

void feldolgoz(const std::vector<int> &sorszam) {
    const auto n = static_cast<int>(sorszam.size());

    std::vector<int> poz(n + 1);
    for (int i = 0; i < n; i++) {
        poz[sorszam[i]] = i;
    }

    const auto tav = [=](int innen, int ide) {
        return innen < ide ? ide - innen : n + ide - innen;
    };

    int alap_tav = 0;
    for (const auto s : sorszam) {
        if (s != n) {
            alap_tav += tav(poz[s], poz[s + 1]);
        }
    }

    using std::cout;

    for (const auto akt: sorszam) {
        auto akt_tav = alap_tav;

        if (akt != n) {
            // Az 'n' sorszamu megy 'akt' helyere
            akt_tav += tav(poz[n], poz[akt]);
            // Az 'akt' helyen levo megy a kor kozepere, ezert a korabbi
            // hozzajarulasat az 'alap_tav'-hoz ki kell vonni.
            akt_tav -= tav(poz[akt], poz[akt + 1]);

            if (akt != 1) {
                // Aki eddig 'akt' helyere ment...
                akt_tav -= tav(poz[akt - 1], poz[akt]);
                // ...az most eggyel nagyobb pozicioba megy
                akt_tav += tav(poz[akt - 1], poz[akt + 1]);
            }
        }

        cout << akt_tav << ' ';
    }

    cout << '\n';
}

int main() {
    const auto sorszam = beolvas(std::cin);
    feldolgoz(sorszam);

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms428 KiB
2Accepted0/03ms416 KiB
3Accepted0/03ms428 KiB
4Accepted2/23ms360 KiB
5Accepted2/22ms356 KiB
6Accepted2/23ms496 KiB
7Accepted2/23ms356 KiB
8Accepted2/23ms376 KiB
9Accepted2/22ms356 KiB
10Accepted2/23ms356 KiB
11Accepted2/23ms392 KiB
12Accepted2/23ms556 KiB
13Accepted2/22ms360 KiB
14Accepted2/23ms492 KiB
15Accepted2/23ms504 KiB
16Accepted1/12ms368 KiB
17Accepted2/217ms1056 KiB
18Accepted2/217ms1272 KiB
19Accepted2/217ms1092 KiB
20Accepted2/217ms924 KiB
21Accepted2/216ms996 KiB
22Accepted2/217ms1156 KiB
23Accepted2/217ms996 KiB
24Accepted2/217ms1056 KiB
25Accepted2/217ms1060 KiB
26Accepted2/217ms1124 KiB
27Accepted2/217ms924 KiB
28Accepted2/217ms1012 KiB
29Accepted1/117ms920 KiB