Cod sursa(job #1733504)

Utilizator LDPalcuPalcu Daniela LDPalcu Data 24 iulie 2016 19:56:53
Problema Loto Scor 35
Compilator c Status done
Runda Arhiva de probleme Marime 1.9 kb
#include <stdio.h>
#include <stdlib.h>
 int c[1000001],v[101];
int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}
int print(FILE *pg,int n,int x)
{
    int ok=1,i,j,k;
    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]==x && ok==1)
                       {
                          fprintf(pg,"%d %d %d",v[i],v[j],v[k]);
                          ok=0;
                       }
    fprintf(pg," ");
    return ok;
}

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

    int n,s;
    fscanf(pf,"%d %d",&n,&s);
    int i,ok=1;
    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)
            {
               ok=print(pg,n,c[i]);
               ok=print(pg,n,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;
}