Cod sursa(job #271613)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 5 martie 2009 17:18:19
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int v[110],i,k,poz,S,j,l,x,poz1,poz2,n,ok,s,m,d;
struct sir {int suma,x,y,z;} sum[1000010];
int cmp(sir a,sir b)
 {return a.suma<b.suma;}
 
int main()
{
FILE *f=fopen("loto.in","r");
FILE *g=fopen("loto.out","w");
fscanf(f,"%d %d",&n,&S);

for(i=1;i<=n;i++) fscanf(f,"%d",&v[i]);

for(i=1;i<=n;i++)
 for(j=i;j<=n;j++)
  for(l=j;l<=n;l++)
    { sum[++k].suma=v[i]+v[j]+v[l];
      sum[k].x=v[i]; sum[k].y=v[j]; sum[k].z=v[l];
    }
sort(sum+1,sum+1+k,cmp);
for(i=1;i<=k;i++)
 { x=S-sum[i].suma;s=1;d=k;
       while(s<=d)
        { m=(s+d)>>1;
          if(sum[m].suma>x) d=m-1;
           else if(sum[m].suma<x) s=m+1;
          else break;
         }
   if(s<=d) {ok=1; poz1=i; poz2=m; break;}
  }
if(!ok) fprintf(g,"%s","-1");
else fprintf(g,"%d %d %d %d %d %d",sum[poz1].x,sum[poz1].y,sum[poz1].z,sum[poz2].x,sum[poz2].y,sum[poz2].z);
fclose(f);
fclose(g);
return 0;
}