Submission #1305155

#TimeUsernameProblemLanguageResultExecution timeMemory
1305155LIANice sequence (IZhO18_sequence)C++17
100 / 100
1382 ms84780 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define v vector
#define lp(i,s,e)for(ll i =s;i<e;++i)





v<v<ll>> g;
v<ll> pre;
v<ll> in;
void topo() {
    queue<ll> q;
    lp(i,0,1e6) if (in[i]==0) q.push(i);
    ll cnt =0;
    while (!q.empty()) {
        auto nd = q.front();
        q.pop();
        pre[nd] =cnt++;
        for (auto it : g[nd]) {
            in[it]--;
            if (in[it]==0) {
                // pre[it] = cnt++;
                q.push(it);
            }
        }
    }
}
void solve() {
    ll n,m;
    cin>>n>>m;
    g.clear();
    g.resize(1e6);
    pre.assign(1e6,0);
    in.assign(1e6,0);
    ll ans = n+m -gcd(n,m)-1;
    cout<<ans<<endl;
    lp(i,0,ans) {
        if (i+n <=ans) {
            g[i+n].push_back(i);
            in[i]++;
        }
        if (i+m <=ans) {
            g[i].push_back(i+m);
            in[i+m]++;

        }
    }

    topo();

    lp(i,1,ans+1) {
        cout<<(i==0 ? pre[i] : pre[i]-pre[i-1])<<" ";
    }
}
int main() {
ll t; cin>>t;
    while (t--) {
        solve();
    }
}
#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...