Cod sursa(job #446822)

Utilizator loginLogin Iustin Anca login Data 26 aprilie 2010 19:11:35
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
# include <fstream>
# include <iostream>
# include <set>
# include <vector>
# include <algorithm>
# define pb push_back
using namespace std;
struct nod{
	int a, b, c, s;
	nod (){}
	nod (int A, int B, int C, int S){
		a=A;b=B;c=C;s=S;}
	friend bool operator < (const nod &a, const nod &b){
		return a.s<b.s;
	};
};
int n, s, rez, v[10];
vector<int>V;
vector<nod>S;

void read ()
{
	int x;
	ifstream fin ("loto.in");
	fin>>n>>s;
	for(int i=1;i<=n;i++)
	{
		fin>>x;
		V.pb(x);
	}
}

void solve ()
{
	vector<nod>::iterator it;
	for(int i=0;i<n;++i)
		for(int j=i;j<n;++j)
			for(int k=j;k<n;++k)
				S.pb(nod(V[i], V[j], V[k], V[i]+V[j]+V[k]));
	sort(S.begin(), S.end());
	for(vector<nod>::iterator I=S.begin();I!=S.end() && !rez;++I)
	{
		it=lower_bound(S.begin(), S.end(), nod(0, 0, 0, s-I->s));
		if (it->s==s-I->s)
		{
			rez=1;
			v[1]=it->a;v[2]=it->b;v[3]=it->c;v[4]=I->a;v[5]=I->b;v[6]=I->c;
		}
	}
}

int main()
{
	read();
	solve ();
	ofstream fout ("loto.out");
	if (rez)
		for(int i=1;i<=6;i++)fout<<v[i]<<" ";
	else
		fout<<"-1";
	return 0;
}