Submission #614824

#TimeUsernameProblemLanguageResultExecution timeMemory
614824KoDNice sequence (IZhO18_sequence)C++17
100 / 100
460 ms44676 KiB
#include <bits/stdc++.h>

using std::vector;

template <class F>
struct fixed : private F {
    explicit fixed(F&& f) : F(std::forward<F>(f)) {}
    template <class... Args>
    decltype(auto) operator()(Args&&... args) const {
        return F::operator()(*this, std::forward<Args>(args)...);
    }
};

vector<int> solve(const int N, const int M) {
    const int len = N + M - 1 - std::gcd(N, M);
    vector<char> done(len + 1);
    vector<int> order;
    order.reserve(len + 1);
    const auto dfs = fixed([&](auto&& dfs, const int u) -> void {
        if (done[u])
            return;
        done[u] = true;
        if (u >= M)
            dfs(u - M);
        if (u + N <= len)
            dfs(u + N);
        order.push_back(u);
    });
    for (int i = 0; i <= len; ++i) {
        dfs(i);
    }
    vector<int> rank(len + 1);
    for (int i = 0; i <= len; ++i) {
        rank[order[i]] = i;
    }
    vector<int> ret(len);
    for (int i = 0; i < len; ++i) {
        ret[i] = rank[i + 1] - rank[i];
    }
    return ret;
}

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int T;
    std::cin >> T;
    while (T--) {
        int N, M;
        std::cin >> N >> M;
        const auto A = solve(N, M);
        std::cout << A.size() << '\n';
        for (int i = 0; i < (int)A.size(); ++i) {
            if (i > 0)
                std::cout << ' ';
            std::cout << A[i];
        }
        std::cout << '\n';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...