Cod sursa(job #2391871)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 29 martie 2019 12:31:28
Problema Submultimi Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
const int M=10000000;
int n,p,k,i,j,s[17],e;
char r[M];
inline void S(int x)
{
    int i,d=x>9?2:1;
    for(i=d-1;i>=0;x/=10,i--)
        r[e+i]=x%10+48;
    r[e+d]=32,e+=d+1;
}
int main()
{
    freopen("submultimi.in","r",stdin),freopen("submultimi.out","w",stdout),scanf("%d",&n);
    for(p=1;p<=n;p++)
        for(k=1,s[k]=0;k;)
        {
            for(s[k]++,j=i=1;i<k&&j;i++)
                if(s[i]==s[k])
                    j=0;
            if(j)
                if(s[k]<=n)
                    if(k==p)
                    {
                        for(i=1;i<=k;i++)
                            S(s[i]);
                        r[e++]=10;
                    }
                    else
                        k++,s[k]=s[k-1];
                else
                    k--;
        }
    fwrite(r,1,e,stdout);
}