提出 #50159293


ソースコード 拡げる

#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 {0};
    is >> n;

    Num ans {0};
    std::set<Num> ns;
    std::map<Num, Num> counts;
    ns.insert(n);
    counts[n] = 1;

    while(!ns.empty()) {
        const auto x = *ns.rbegin();
        ns.erase(x);

        if (x < 2) {
            continue;
        }

        const auto ct = counts[x];
        ans += x * ct;
        const auto l = x / 2;
        const auto u = (x + 1) / 2;

        counts[l] += ct;
        if (!ns.contains(l)) {
            ns.insert(l);
        }

        counts[u] += ct;
        if (!ns.contains(u)) {
            ns.insert(u);
        }
    }

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

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

提出情報

提出日時
問題 C - Divide and Divide
ユーザ zettsut
言語 C++ 20 (gcc 12.2)
得点 300
コード長 1374 Byte
結果 AC
実行時間 1 ms
メモリ 3656 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 300 / 300
結果
AC × 3
AC × 11
セット名 テストケース
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, 02_corner_00.txt, 02_corner_01.txt, 03_min_00.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3464 KiB
00_sample_01.txt AC 1 ms 3568 KiB
00_sample_02.txt AC 1 ms 3484 KiB
01_random_00.txt AC 1 ms 3476 KiB
01_random_01.txt AC 1 ms 3572 KiB
01_random_02.txt AC 1 ms 3476 KiB
01_random_03.txt AC 1 ms 3532 KiB
01_random_04.txt AC 1 ms 3656 KiB
02_corner_00.txt AC 1 ms 3428 KiB
02_corner_01.txt AC 1 ms 3364 KiB
03_min_00.txt AC 1 ms 3484 KiB