Submission #1172104

#TimeUsernameProblemLanguageResultExecution timeMemory
1172104sofija6Nice sequence (IZhO18_sequence)C++20
100 / 100
1196 ms58756 KiB
#include <bits/stdc++.h>
#define ll long long
#define MAXN 500010
using namespace std;
vector<ll> G[MAXN];
ll indeg[MAXN],pref[MAXN],ans[MAXN];
int main()
{
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll t,n,m;
    cin >> t;
    while (t--)
    {
        cin >> n >> m;
        ll d=__gcd(n,m);
        ll len=max(0ll,n+m-d-1);
        ll cur=2*len;
        for (ll i=0;i<=len;i++)
        {
            G[i].clear();
            indeg[i]=0;
            pref[i]=cur--;
        }
        for (ll i=0;i+n<=len;i++)
        {
            G[i].push_back(i+n);
            indeg[i+n]++;
        }
        for (ll i=0;i+m<=len;i++)
        {
            G[i+m].push_back(i);
            indeg[i]++;
        }
        queue<ll> q;
        for (ll i=0;i<=len;i++)
        {
            if (!indeg[i])
                q.push(i);
        }
        while (!q.empty())
        {
            ll i=q.front();
            q.pop();
            for (ll next : G[i])
            {
                indeg[next]--;
                pref[next]=min(pref[next],cur--);
                if (!indeg[next])
                    q.push(next);
            }
        }
        cout << len << "\n";
        for (ll i=1;i<=len;i++)
            cout << pref[i]-pref[i-1] << " ";
        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...