Cod sursa(job #1732480)

Utilizator LDPalcuPalcu Daniela LDPalcu Data 21 iulie 2016 18:05:29
Problema Loto Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <stdio.h>
#include <stdlib.h>
int cmpfunc (const void * c, const void * b)
{
   return ( *(int*)c - *(int*)b );
}

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

    int n,s,nr1,nr2;
    fscanf(pf,"%d %d",&n,&s);
    int v[n+1],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++)
                a[++p]=v[i]+v[j]+v[k];
    //quicksort(a,1,p);
    qsort(a+1,p,sizeof(int),cmpfunc);
    i=1;j=p;
    while (i<=j)
    {

        if ((a[i]+a[j])==s)
            {
                nr1=a[i];
                nr2=a[j];
                //printf("%d %d",a[i],a[j]);
                break;
            }

        else
        {if (a[i]+a[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;
}