123822024-12-15 22:05:27kukkermanSípálya (55 pont)cpp17Elfogadva 55/5527ms1484 KiB
#include <iostream>
#include <cstdint>
#include <deque>
#include <algorithm>

int main() {
    std::cin.tie(nullptr);
    std::ios::sync_with_stdio(false);
    
    auto &be = std::cin;

    uint64_t n, k;
    be >> n >> k;

    std::deque<uint64_t> sor, max_sor;

    uint64_t m;
    be >> m;
    sor.push_back(m);
    max_sor.push_back(m);

    uint64_t i, akt_koltseg = 0;
    for (i = 1; i < k; i++) {
        be >> m;
        m += i;
        sor.push_back(m);

        const auto elozo_max_magassag = max_sor.front();
        while (!max_sor.empty() && max_sor.back() < m) {
            max_sor.pop_back();
        }
        max_sor.push_back(m);
        const auto akt_max_magassag = max_sor.front();

        akt_koltseg += (elozo_max_magassag < akt_max_magassag)     ?
                       (akt_max_magassag - elozo_max_magassag) * i :
                       (akt_max_magassag - m);
    }

    auto min_koltseg = akt_koltseg;
    for (; i < n; i++) {
        be >> m;
        m += i;
        sor.push_back(m);

        auto elozo_max_magassag = max_sor.front();
        while (!max_sor.empty() && max_sor.back() < m) {
            max_sor.pop_back();
        }
        max_sor.push_back(m);
        auto akt_max_magassag = max_sor.front();

        akt_koltseg += (elozo_max_magassag < akt_max_magassag)     ?
                       (akt_max_magassag - elozo_max_magassag) * k :
                       (akt_max_magassag - m);

        const auto bal = sor.front();
        sor.pop_front();
        if (akt_max_magassag == bal) {
            max_sor.pop_front();
            elozo_max_magassag = akt_max_magassag;
            akt_max_magassag = max_sor.front();

            akt_koltseg -= (elozo_max_magassag - akt_max_magassag) * k;

        } else {
            akt_koltseg -= akt_max_magassag - bal;
        }

        min_koltseg = std::min(min_koltseg, akt_koltseg);
    }

    std::cout << min_koltseg << '\n';

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms320 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva2/21ms320 KiB
4Elfogadva2/21ms320 KiB
5Elfogadva2/21ms320 KiB
6Elfogadva2/21ms320 KiB
7Elfogadva3/31ms320 KiB
8Elfogadva1/12ms320 KiB
9Elfogadva1/12ms320 KiB
10Elfogadva1/12ms320 KiB
11Elfogadva1/12ms500 KiB
12Elfogadva1/12ms320 KiB
13Elfogadva1/12ms504 KiB
14Elfogadva2/22ms320 KiB
15Elfogadva2/22ms636 KiB
16Elfogadva2/226ms532 KiB
17Elfogadva2/226ms1228 KiB
18Elfogadva2/226ms1448 KiB
19Elfogadva3/326ms1484 KiB
20Elfogadva2/226ms500 KiB
21Elfogadva2/225ms568 KiB
22Elfogadva2/226ms660 KiB
23Elfogadva2/226ms576 KiB
24Elfogadva2/227ms568 KiB
25Elfogadva2/226ms680 KiB
26Elfogadva2/226ms568 KiB
27Elfogadva2/226ms772 KiB
28Elfogadva3/325ms568 KiB
29Elfogadva3/326ms780 KiB
30Elfogadva3/326ms824 KiB