113732024-08-27 23:30:45kukkermanÚthasználati díj (75 pont)cpp17Elfogadva 75/7520ms888 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdint>

void beolvas(std::istream &be, std::vector<int> &v, int &k) {
    int n;
    be >> n >> k;

    v.resize(n);
    for (auto &x : v) {
        be >> x;
    }
}

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

    const uint64_t dijkoteles_db = std::count(v.begin(), v.end(), 1);
    const uint64_t max_db = std::min(dijkoteles_db, static_cast<uint64_t>(k));

    // elso = (dijkoteles_db - max_db + 1)
    // utolso = (dijkoteles_db - 2 + 1) = dijkoteles_db - 1
    // n = utolso - elso + 1 = dijkoteles_db - 1 - (dijkoteles_db - max_db + 1) = max_db - 1
    // utvonal_db = elso + .. + utolso
    // utvonal_db = (elso + utolso) * n / 2
    // utvonal_db = ((dijkoteles_db - max_db + 1) + (dijkoteles_db - 1)) * (max_db - 1) / 2
    // utvonal_db = (dijkoteles_db - max_db + 1 + dijkoteles_db - 1) * (max_db - 1) / 2
    // utvonal_db = (2 * dijkoteles_db - max_db) * (max_db - 1) / 2
    const uint64_t utvonal_db = (2 * dijkoteles_db - max_db) * (max_db - 1) / 2;
    std::cout << utvonal_db << '\n';
}

int main() {
    std::vector<int> v;
    int k;
    beolvas(std::cin, v, k);

    feldolgoz(v, k);

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base75/75
1Elfogadva0/02ms384 KiB
2Elfogadva0/02ms488 KiB
3Elfogadva0/019ms744 KiB
4Elfogadva5/52ms408 KiB
5Elfogadva5/52ms364 KiB
6Elfogadva5/53ms360 KiB
7Elfogadva5/53ms384 KiB
8Elfogadva5/53ms360 KiB
9Elfogadva5/53ms296 KiB
10Elfogadva5/53ms292 KiB
11Elfogadva5/53ms232 KiB
12Elfogadva5/53ms632 KiB
13Elfogadva5/52ms368 KiB
14Elfogadva5/519ms888 KiB
15Elfogadva5/520ms764 KiB
16Elfogadva5/520ms888 KiB
17Elfogadva5/519ms760 KiB
18Elfogadva5/519ms760 KiB