Submission #48772317


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/modint>

namespace {
    using ModInt [[maybe_unused]] = atcoder::modint998244353;
    using Num [[maybe_unused]] = long long int;
    using Vec [[maybe_unused]] = std::vector<Num>;
    using Set [[maybe_unused]] = std::set<Num>;
    using Mset [[maybe_unused]] = std::multiset<Num>;
    using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;

    template<typename T>
    using Q [[maybe_unused]] = std::queue<T>;

    template<typename T>
    using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}

void solve(std::istream& is, std::ostream& os) {
    Num n, k;
    is >> n >> k;

    Vec ss(n, 2);
    for(Num i{0}; i<k; ++i) {
        Num a;
        is >> a;
        --a;
        ss.at(a) -= 1;
    }

    Vec ts;
    for(Num i{0}; i<n; ++i) {
        for(Num j{0}; j<ss.at(i); ++j) {
            ts.push_back(i);
        }
    }

    Num size = static_cast<Num>(ts.size());
    if ((size % 2) == 0) {
        Num ans {0};
        for(Num i{0}; i<size; i+=2) {
            ans += std::abs(ts.at(i+1) - ts.at(i));
        }
        os << ans << "\n";
        return;
    }

    Vec cumsum_f {0};
    for(Num i{0}; (i+1)<size; i+=2) {
        Num d = std::abs(ts.at(i+1) - ts.at(i));
        cumsum_f.push_back(cumsum_f.back() + d);
    }

    Vec cumsum_b {0};
    for(Num i{size-2}; i>=1; i-=2) {
        Num d = std::abs(ts.at(i+1) - ts.at(i));
        cumsum_b.push_back(cumsum_b.back() + d);
    }

    Num ans {1000000000000000000LL};
    for(Num i{0}; i<size; ++i) {
        if ((i % 2) == 0) {
            Num d = cumsum_f.at(i / 2) + cumsum_b.at((size - i - 1) / 2);
            ans = std::min(ans, d);
        } else {
            Num d = cumsum_f.at(i / 2) + cumsum_b.at((size - i - 1) / 2) + std::abs(ts.at(i+1) - ts.at(i-1));
            ans = std::min(ans, d);
        }
    }

    os << ans << "\n";
}

int main(void) {
    solve(std::cin, std::cout);
    return 0;
}

Submission Info

Submission Time
Task C - Socks 2
User zettsut
Language C++ 20 (gcc 12.2)
Score 350
Code Size 2044 Byte
Status AC
Exec Time 37 ms
Memory 13148 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 350 / 350
Status
AC × 3
AC × 28
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 02_consec_00.txt, 02_consec_01.txt, 02_consec_02.txt, 03_segreg_00.txt, 03_segreg_01.txt, 03_segreg_02.txt, 03_segreg_03.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3476 KiB
00_sample_01.txt AC 1 ms 3504 KiB
00_sample_02.txt AC 1 ms 3604 KiB
01_random_00.txt AC 5 ms 8868 KiB
01_random_01.txt AC 9 ms 13116 KiB
01_random_02.txt AC 5 ms 8920 KiB
01_random_03.txt AC 9 ms 13008 KiB
01_random_04.txt AC 6 ms 8920 KiB
01_random_05.txt AC 9 ms 13068 KiB
01_random_06.txt AC 5 ms 8880 KiB
01_random_07.txt AC 9 ms 13148 KiB
01_random_08.txt AC 22 ms 8912 KiB
01_random_09.txt AC 23 ms 11420 KiB
01_random_10.txt AC 21 ms 8764 KiB
01_random_11.txt AC 24 ms 11420 KiB
01_random_12.txt AC 34 ms 6716 KiB
01_random_13.txt AC 37 ms 8944 KiB
01_random_14.txt AC 35 ms 6724 KiB
01_random_15.txt AC 37 ms 8808 KiB
01_random_16.txt AC 34 ms 6724 KiB
01_random_17.txt AC 37 ms 8960 KiB
02_consec_00.txt AC 9 ms 12988 KiB
02_consec_01.txt AC 28 ms 11028 KiB
02_consec_02.txt AC 23 ms 11552 KiB
03_segreg_00.txt AC 24 ms 11408 KiB
03_segreg_01.txt AC 22 ms 11516 KiB
03_segreg_02.txt AC 23 ms 11428 KiB
03_segreg_03.txt AC 23 ms 11428 KiB