Cod sursa(job #194812)

Utilizator katakunaCazacu Alexandru katakuna Data 14 iunie 2008 13:56:06
Problema Loto Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

int m,S,v[105];

struct suma {int s,a,b,c;}s[1000111];

int n,i,j,l;


int cmp(suma a,suma b){
return a.s<b.s;
}


int main(){


FILE *f=fopen("loto.in","r");
fscanf(f,"%d %d",&n,&S);

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

fclose(f);

int y;

 for(i=1;i<=n;i++){
   for(j=1;j<=n;j++){
     for(l=1;l<=n;l++){
     y=v[i]+v[j]+v[l];

       if(y<=S){
       
         m++;
         s[m].s=y;
         s[m].a=v[i];
         s[m].b=v[j];
         s[m].c=v[l];

       }
       
     }
   }
 }
 

sort(s+1,s+m+1,cmp);

int sol,p,u,mij;

FILE *g=fopen("loto.out","w");


  for(i=1;i<=m;i++){
  sol=S-s[i].s;

    if(s[i].s!=s[i-1].s){

    p=i;
    u=m;

      while(p<=u){
      mij=(p+u) >> 1;

        if(s[mij].s>=sol){
        u=mij-1;
        }

        else
        p=mij+1;
      

      }


     if(s[p].s==sol){

      fprintf(g,"%d %d %d %d %d %d",s[i].a,s[i].b,s[i].c,s[p].a,s[p].b,s[p].c);

     return 0;
     }


    }

  }


fprintf(g,"%d",-1);


fclose(g);

return 0;
}