113342024-08-18 20:19:30kukkermanKörJáték (50 pont)cpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms428 KiB
2Elfogadva0/03ms416 KiB
3Elfogadva0/03ms428 KiB
4Elfogadva2/23ms360 KiB
5Elfogadva2/22ms356 KiB
6Elfogadva2/23ms496 KiB
7Elfogadva2/23ms356 KiB
8Elfogadva2/23ms376 KiB
9Elfogadva2/22ms356 KiB
10Elfogadva2/23ms356 KiB
11Elfogadva2/23ms392 KiB
12Elfogadva2/23ms556 KiB
13Elfogadva2/22ms360 KiB
14Elfogadva2/23ms492 KiB
15Elfogadva2/23ms504 KiB
16Elfogadva1/12ms368 KiB
17Elfogadva2/217ms1056 KiB
18Elfogadva2/217ms1272 KiB
19Elfogadva2/217ms1092 KiB
20Elfogadva2/217ms924 KiB
21Elfogadva2/216ms996 KiB
22Elfogadva2/217ms1156 KiB
23Elfogadva2/217ms996 KiB
24Elfogadva2/217ms1056 KiB
25Elfogadva2/217ms1060 KiB
26Elfogadva2/217ms1124 KiB
27Elfogadva2/217ms924 KiB
28Elfogadva2/217ms1012 KiB
29Elfogadva1/117ms920 KiB