Cod sursa(job #1080705)

Utilizator denisx304Visan Denis denisx304 Data 12 ianuarie 2014 20:14:14
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <cstdio>
struct pereche {
    int no1;
    int no2;
    int no3;
    int suma;
    }v[1000000];
int n,s,vec[100],contor,my_hash[300],sc;
FILE *f,*g;
int main()
{
    f=fopen("loto.in","r");
    g=fopen("loto.out","w");
    fscanf(f,"%d%d",&n,&s);
    for (int i=0; i<n; i++)
        fscanf(f,"%d",&vec[i]);
    contor=-1;
    //for (int i=1; i<=n; i++)
       // printf("%d ",vec[i]);
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
            for (int k=0; k<n; k++)
    {
        v[++contor].no1=vec[i];
        v[contor].no2=vec[j];
        v[contor].no3=vec[k];
        v[contor].suma=vec[i]+vec[j]+vec[k];
        //printf("%d %d %d %d %d\n",contor,v[contor].suma,v[contor].no1,v[contor].no2,v[contor].no3);
    }
    for (int i=0; i<300; i++)
        my_hash[i]=-1;
    for (int i=0; i<n*n*n; i++)
        {
        my_hash[v[i].suma]=i;
        //printf("%d %d\n",my_hash[v[i].suma],v[i].suma);
        }
    //for (int i=0; i<300; i++)
        //printf("%d ",my_hash[i]);
    for (int i=0; i<n*n*n; i++)
           if ((s-v[i].suma)>=0)
           {
              sc=s-v[i].suma;
              if (my_hash[sc]>-1)
                {
                    fprintf(g,"%d %d %d %d %d %d",v[i].no1,v[i].no2,v[i].no3,v[my_hash[sc]].no1,v[my_hash[sc]].no2,v[my_hash[sc]].no3);
                    break;
                }
           }
    fclose(f);
    fclose(g);
    return 0;
}