Cod sursa(job #1733499)

Utilizator LDPalcuPalcu Daniela LDPalcu Data 24 iulie 2016 19:43:51
Problema Loto Scor 35
Compilator c Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <stdio.h>
#include <stdlib.h>
 int c[1000001];
int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

int main()
{
    FILE *pf,*pg;
    pf=fopen("loto.in","r");
    pg=fopen("loto.out","w");

    int n,s,nr1,nr2;
    fscanf(pf,"%d %d",&n,&s);
    int v[101],i;
    for (i=1; i<=n; i++)
        fscanf(pf,"%d",&v[i]);
    int j,k,p=0;
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++)
            for (k=1; k<=n; k++)
                c[++p]=v[i]+v[j]+v[k];
    qsort(c+1,p,sizeof(int),cmpfunc);
    i=1;j=p;
    while (i<=j)
    {

        if ((c[i]+c[j])==s)
            {
                nr1=c[i];
                nr2=c[j];
                break;
            }

        else
        {if (c[i]+c[j]<s)
            i++;
        else
            j--;}


    }
    int ok=1;
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++)
               for (k=1; k<=n; k++)
                    if (v[i]+v[j]+v[k]==nr1 && ok==1)
                       {
                          fprintf(pg,"%d %d %d",v[i],v[j],v[k]);
                          ok=0;
                       }
    ok=1;
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++)
               for (k=1; k<=n; k++)
                    if (v[i]+v[j]+v[k]==nr2 && ok==1)
                        {
                            fprintf(pg," %d %d %d\n",v[i],v[j],v[k]);
                            ok=0;
                        }
    if (ok==1) fprintf(pg,"-1");
    return 0;
}