Submission #1363379

#TimeUsernameProblemLanguageResultExecution timeMemory
1363379liptonekMonster-Go (EGOI25_monstergo)C++20
10 / 100
0 ms352 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int N;
    cin>>N;

    if(N<=4)
    {
        for(int i=0; i<N; i++)
        {
            for(int j=0; j<12; j++)
            {
                cout<<i*12+j<<(j==11 ? "" : " ");
            }

            cout<<endl;
        }
    }
    else
    {
        int m=12;

        auto comb=[](int n, int k)
        {
            if(k>n)
            {
                return 0LL;
            }

            if(k==0 || k==n)
            {
                return 1LL;
            }

            if(k>n/2)
            {
                k=n-k;
            }

            long long res=1;

            for(int i=1; i<=k; i++)
            {
                res=res*(n-i+1)/i;
            }

            return res;
        };

        while(comb(m,12)<(long long)N)
        {
            m++;
        }

        vector<int> subset(12);

        for(int i=0; i<12; i++)
        {
            subset[i]=i;
        }

        for(int i=0; i<N; i++)
        {
            for(int j=0; j<12; j++)
            {
                cout<<subset[j]<<(j==11 ? "" : " ");
            }

            cout<<endl;

            if(i<N-1)
            {
                int k=11;

                while(k>=0 && subset[k]==m-12+k)
                {
                    k--;
                }

                if(k>=0)
                {
                    subset[k]++;

                    for(int l=k+1; l<12; l++)
                    {
                        subset[l]=subset[l-1]+1;
                    }
                }
            }
        }
    }

    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...