Cod sursa(job #750960)

Utilizator svladScurtu Vlad svlad Data 23 mai 2012 18:58:38
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <algorithm>
using namespace std;
long long v[1000],w[1000010];
int main()
{
	ifstream f("loto.in");
	ofstream g("loto.out");
	long long n,i,j,OK=0,x,k,q,t,m,OK2=0;
	long long S,S2;
	f>>n; f>>S; 
	for(i=1;i<=n;i++)
		f>>v[i];
	k=0;
	for(i=1;i<=n;i++)
	{	for(j=i;j<=n;j++)
		 { for(q=j;q<=n;q++)
			 { w[++k]=v[i]+v[j]+v[q];}
		 }
	}
	sort(1+w,1+w+k);
	for(q=1;q<=k;q++)
	{	i=1; OK=0;
		j=k; t=S-w[q];
		while(i<=j&&OK==0)
		{	m=(i+j)/2;
			if(w[m]==t) {OK=1; break;}
			if(w[m]>t) j=m-1;
			else i=m+1;
		}
	}
	OK2=0;
	if(OK==1)
	{	for(i=1;i<=n&&OK2==0;i++)
		 { for(j=i;j<=n&&OK2==0;j++)
			 { for(q=j;q<=n&&OK2==0;q++)
				 { if(w[m]==v[i]+v[j]+v[q]) {g<<v[i]<<" "<<v[j]<<" "<<v[q]<<" "; OK2=0;}
				 }
			 }
		 }
		OK2=0;
		for(i=1;i<=n&&OK2==0;i++)
		 { for(j=i;j<=n&&OK2==0;j++)
			 { for(q=j;q<=n&&OK2==0;q++)
				 { if(S-w[m]==v[i]+v[j]+v[q]) {g<<v[i]<<" "<<v[j]<<" "<<v[q]; OK2=0;}
				 }
			 }
		 }
	}
	else g<<-1;
	f.close();
	g.close();
	return 0;
}