Cod sursa(job #194814)

Utilizator katakunaCazacu Alexandru katakuna Data 14 iunie 2008 14:32:28
Problema Loto Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

int m,S,v[105];

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

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);

int ok,N=0;
int w;

  for(i=1;i<=n;i++){
  fscanf(f,"%d",&w);
  ok=1;
  
    for(j=1;j<=N;j++){
      if(v[j]==w){
      ok=0;
      break;
      }
    }

   if(ok){
   N++;
   v[N]=w;
   }

  }

n=N;

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");


   p=1;
   u=m;


  while(p<=u){


   if(s[p].s+s[u].s==S){
   fprintf(g,"%d %d %d %d %d %d",s[u].a,s[u].b,s[u].c,s[p].a,s[p].b,s[p].c);
   return 0;
   }

   else{

     if(s[p].s+s[u].s>S)
     u--;

     else
     p++;

   }

  }




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


fclose(g);

return 0;
}