提出 #57474197


ソースコード 拡げる

#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>>;

    const std::vector<std::pair<Num, Num>> dyxs {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    std::map<char, std::pair<Num, Num>> directions {{'D', {1, 0}}, {'U', {-1, 0}}, {'R', {0, 1}}, {'L', {0, -1}}};

    template<typename T>
    void print_oneline(const std::vector<T>& vec, std::ostream& os) {
        const auto size = vec.size();
        for(size_t i{0}; i<size; ++i) {
            os << vec.at(i) << (((i+1) == size) ? '\n' : ' ');
        }
    }

    template<typename T>
    void print_each(const std::vector<T>& vec, std::ostream& os) {
        const auto size = vec.size();
        for(size_t i{0}; i<size; ++i) {
            os << vec.at(i) << '\n';
        }
    }
}

void mark_numbers(Num n, std::vector<Set>& ps, const Vec& order, Num mark, Vec& marks) {
    std::vector<Vec> qs(3);
    for(Num i{0}; i<3; ++i) {
        Num left = n * i;
        Num right = left + n;
        for(const auto& p : ps.at(order.at(i))) {
            if ((left <= p) && (p < right)) {
                qs.at(i).push_back(p);
            }
        }
    }

    std::vector<size_t> ms(3);
    for(Num i{0}; i<3; ++i) {
        ms.at(i) = qs.at(i).size();
    }

    const auto sz = *std::ranges::min_element(ms);
    for(Num i{0}; i<3; ++i) {
        for(size_t j{0}; j<sz; ++j) {
            const auto& v = qs.at(i).at(j);
            marks.at(v) = mark;
            ps.at(order.at(i)).erase(v);
        }
    }

    return;
}

void solve(std::istream& is, std::ostream& os) {
    Num n {0};
    std::string s;
    is >> n >> s;
    const auto n3 = n * 3;

    std::vector<Set> ps(3);
    for(Num i{0}; i<n3; ++i) {
        const Num d = s.at(i) - 'A';
        ps.at(d).insert(i);
    }

    std::vector<std::pair<Num,Num>> ss;
    Vec order {0,1,2};
    Num mark {1};
    Vec ans(n3, 1);
    do {
        mark_numbers(n, ps, order, mark, ans);
        ++mark;
    } while(std::next_permutation(order.begin(), order.end()));

    for(const auto& x : ans) {
        os << x;
    }
    os << "\n";
}

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

提出情報

提出日時
問題 A - ABC Identity
ユーザ zettsut
言語 C++ 20 (gcc 12.2)
得点 400
コード長 2734 Byte
結果 AC
実行時間 221 ms
メモリ 39740 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 2
AC × 46
セット名 テストケース
Sample 01.txt, 02.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt
ケース名 結果 実行時間 メモリ
01.txt AC 1 ms 3452 KiB
02.txt AC 1 ms 3344 KiB
03.txt AC 1 ms 3552 KiB
04.txt AC 1 ms 3464 KiB
05.txt AC 1 ms 3484 KiB
06.txt AC 1 ms 3556 KiB
07.txt AC 1 ms 3488 KiB
08.txt AC 1 ms 3556 KiB
09.txt AC 1 ms 3492 KiB
10.txt AC 1 ms 3388 KiB
11.txt AC 1 ms 3436 KiB
12.txt AC 1 ms 3440 KiB
13.txt AC 1 ms 3380 KiB
14.txt AC 1 ms 3460 KiB
15.txt AC 1 ms 3492 KiB
16.txt AC 1 ms 3396 KiB
17.txt AC 1 ms 3520 KiB
18.txt AC 2 ms 3788 KiB
19.txt AC 2 ms 3656 KiB
20.txt AC 2 ms 3708 KiB
21.txt AC 2 ms 3660 KiB
22.txt AC 2 ms 3704 KiB
23.txt AC 2 ms 3820 KiB
24.txt AC 2 ms 3732 KiB
25.txt AC 2 ms 3728 KiB
26.txt AC 216 ms 39208 KiB
27.txt AC 215 ms 39724 KiB
28.txt AC 210 ms 39172 KiB
29.txt AC 212 ms 39740 KiB
30.txt AC 214 ms 39180 KiB
31.txt AC 216 ms 39212 KiB
32.txt AC 214 ms 39172 KiB
33.txt AC 212 ms 39212 KiB
34.txt AC 216 ms 39268 KiB
35.txt AC 210 ms 39172 KiB
36.txt AC 216 ms 39260 KiB
37.txt AC 216 ms 39132 KiB
38.txt AC 211 ms 39196 KiB
39.txt AC 216 ms 39652 KiB
40.txt AC 208 ms 39740 KiB
41.txt AC 213 ms 39148 KiB
42.txt AC 209 ms 39224 KiB
43.txt AC 213 ms 39328 KiB
44.txt AC 218 ms 39260 KiB
45.txt AC 221 ms 39164 KiB
46.txt AC 215 ms 39268 KiB