Cod sursa(job #490506)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 6 octombrie 2010 18:31:07
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb

#include<cstdio>
#include<fstream>
#include<algorithm>

using namespace std;

#define m 101

struct loto{
	int s, s1,s2,s3;
	};
	
	int v[m];
	int n,s,ii;
	loto a[m*m*m];
	
int compara (loto x,loto y){return x.s<y.s;}
	
	int main (){
		
		ifstream in ("loto.in");
		in>>n>>s;
		for(int i=1;i<=n;++i)
		in>>v[i];
		in.close();
		
		freopen ("loto.out","w",stdout);
		
		for(int i=1;i<=n;++i)
			for(int j=i;j<=n;++j)
			for(int k=j;k<=n;++k){
				a[++ii].s=v[i]+v[j]+v[k];
				a[ii].s1=v[i];
				a[ii].s2=v[j];
				a[ii].s3=v[k];
				}
			
		sort (a+1,a+ii+1,compara);
		
		int st=1,dr=ii,ss;
		for(int i=1;i<=ii;++i){
			dr=ii+1;
			st=1;
			ss=s-a[i].s;
			while(st<=dr){
				if(ss==a[(st+dr)/2].s){
					printf("%d %d %d %d %d %d\n",a[i].s1,a[i].s2,a[i].s3,a[(st+dr)/2].s1,a[(st+dr)/2].s2,a[(st+dr)/2].s3);
					return 0;
					}
					else
					if(ss>a[(st+dr)/2].s)
					st=(st+dr)/2-1;
					else
					dr=(st+dr)/2+1;
					
				}
			}
			
		printf("-1\n");
		
		return 0;}