Cod sursa(job #513566)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 16 decembrie 2010 11:31:13
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 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];
	
bool inline 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){
				int mj=(st+dr)>>1;
				if(ss==a[mj].s){
					printf("%d %d %d %d %d %d\n",a[i].s1,a[i].s2,a[i].s3,a[mj].s1,a[mj].s2,a[mj].s3);
					return 0;
					}
					else
					if(ss<a[mj].s)
					dr=mj-1;
					else
					st=mj+1;
					
				}
			}
			
		printf("-1\n");
		
		return 0;}