Cod sursa(job #2926255)

Utilizator Codrut198Codrut Dinca Codrut198 Data 17 octombrie 2022 15:56:43
Problema Combinari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.68 kb
#include <stdio.h>
#include <fstream>
using namespace std;
ifstream f("combinari.in");
FILE *fout;
char o[200];
int kv;//ofstream g("combinari.out");

int fl[20],af[20];
void golire()
{
    for(int i=0; i<200; i++)
        o[i]='\0';
}
int n,tot,lol;
void afis()
{
    /*for(int i=0; i<tot; i++)
        g<<af[i]<<" ";
    g<<"\n";*/

    for(int i=0; i<tot; i++)
    {if(af[i]>9)
        {o[kv++]=af[i]/10+'0';o[kv++]=af[i]%10+'0';}
        else
            o[kv++]=af[i]+'0';
        o[kv++]=' ';
    }
    o[kv++]='\n';
    if(kv>=150)
    {
        fprintf(fout,"%s",o);
        kv=0;
        golire();

    }
}
void com(int x,int k)
{

    {
        if(x==1)
        {
            for(int i=k; i<=n-x+1; i++)
            {
                if(fl[i]==0&&i>af[tot-x-1])
                {
                    af[tot-1]=i;
                    afis();
                }
            }
        }
        else
        {
            for(int i=k; i<=n-x+1; i++)
            {
                if(lol==0)
                {
                    lol=1;
                    if(fl[i]==0)
                    {
                        fl[i]=1;
                        af[tot-x]=i;
                        com(x-1,k+1);
                        fl[i]=0;
                    }
                }

                else if(fl[i]==0&&i>af[tot-x-1])
                {
                    fl[i]=1;
                    af[tot-x]=i;
                    com(x-1,k+1);
                    fl[i]=0;
                }
            }
        }
    }
}

int main()
{

    fout = fopen("combinari.out", "w");
    f>>n>>tot;
    com(tot,1);
    fprintf(fout,"%s",o);
}