Cod sursa(job #253434)

Utilizator ConsstantinTabacu Raul Consstantin Data 5 februarie 2009 19:45:52
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
struct sume{unsigned long long int s,a,b,c;} v[110000];
unsigned long long int x[101],m,k,d;
int i,j,l,n;

int cout(unsigned long long int val,int p)
{int q=k,mij;
while(p<=q)
        {mij=(p+q)>>1;
        if(v[mij].s>val)
                q=mij-1;
       else
       if(v[mij].s<val)
                p=mij+1;
      else
        return mij;
      }
return 0;}
int main(){
FILE *f=fopen("loto.in","r");
fscanf(f,"%d %lld",&n,&m);
for(i=1;i<=n;i++)
        fscanf(f,"%lld",&x[i]);
fclose(f);

for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
                for(l=1;l<=n;l++)
                        {v[++k].s=x[i]+x[j]+x[l];
                        v[k].a=x[i];
                        v[k].b=x[j];
                        v[k].c=x[l];

                        }

FILE *g=fopen("loto.out","w");
for(i=1;i<=k&&v[i].s<m/2;i++)
        {d=m-v[i].s;
        if(d>0)
                l=cout(d,i);
       if(l)
       {fprintf(g,"%lld %lld %lld %lld %lld %lld",v[i].a,v[i].b,v[i].c,v[l].a,v[l].b,v[l].c);
       fclose(g);
       return 0;}
       }
fprintf(g,"%d",-1);
fclose(g);
return 0;}