Cod sursa(job #500911)

Utilizator alexamiu2008Miu Alexandra alexamiu2008 Data 13 noiembrie 2010 17:05:01
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
FILE*fin,*fout;
long int i,j,k,l,n,a[101],s,p,u;
struct loto  {
  int s,b1,b2,b3;
  }v[1000001];
int cmp(loto a,loto b){
    if(a.s<b.s){
    return 1;}
    return 0;
    }
int main(){
fin=fopen("loto.in","r");
fout=fopen("loto.out","w");
fscanf(fin,"%ld %ld",&n,&s);
for(i=1;i<=n;i++){
 fscanf(fin,"%ld ",&a[i]);
}


  int m=0;



for(i=1;i<=n;i++){
       for(j=i;j<=n;j++){
	    for(k=j;k<=n;k++){
		 m++;v[m].s=a[i]+a[j]+a[k];
			   v[m].b1=a[i];
			   v[m].b2=a[j];
			   v[m].b3=a[k];
	    }
	  }
       }
       sort(v+1,v+m+1,cmp);
       for(i=1;i<=m;i++){
	  p=1;u=m;
	  while(p<=u){
	  k=(u+p)/2;
	  if(v[k].s==s-v[i].s){
	  fprintf(fout,"%ld %ld %ld %ld %ld %ld",v[i].b1,v[i].b2,v[i].b3,v[k].b1,v[k].b2,v[k].b3);
	   return 0;
	  }
	 else{
	 if(v[k].s<s-v[i].s){
	 u=k+1;
	 }
	else{p=k-1;}


	 }
	  }


       }
 fprintf(fout,"-1");
return 0;
}