Cod sursa(job #490486)

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

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

using namespace std;

#define m 101

struct loto{
	int s;
	int s1;
	int s2;
	int s3;
	};
	
	int v[m];
	int n,s,ii;
	loto a[m*m*m];
	
	void inline read (){
		
		ifstream in ("loto.in");
		in>>n>>s;
		for(int i=1;i<=n;++i)
		in>>v[i];
		in.close ();
		
		}
		
		void inline add (){
			
			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];
				}
			
			}
			
			bool inline compara (loto b1,loto b2){
				
				return b1.s<b2.s;
				
				}
	
	int main (){
		
		read ();
		add ();
		sort (a+1,a+ii+1,compara);
		
		freopen ("loto.out","w",stdout);
		
		for(int st,i=1,dr,ss;i<=ii;++i){
			dr=ii;
			st=1;
			ss=s-a[i].s;
			for(;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");
		
		return 0;}