Cod sursa(job #518801)

Utilizator dacyanMujdar Dacian dacyan Data 3 ianuarie 2011 05:35:07
Problema Loto Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define INF 102
using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");

struct S {
	long long nr1, nr2, nr3, sum;
}a[INF*INF*INF];

long long s, n, su, b[INF], k1, k2;
bool ok;

bool Calc(S a, S b);

int main()
{
	fin >> n >> s;
	for (int i = 1; i <= n; ++i)
		fin >> b[i];
	fin.close();
	
	long long c = 1;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			for (int k = 1; k <= n; ++k)
			{
				a[c].nr1 = b[i];
				a[c].nr2 = b[j];
				a[c].nr3 = b[k];
				a[c].sum = b[i] + b[j] + b[k];
				c++;
			}
	sort(a, a + c, Calc);
	long long st = 1, dr = c - 1, mij;
	while (st <= dr)
	{
		if (a[st].sum + a[dr].sum == s)
		{
			fout << a[st].nr1 << ' ' << a[st].nr2 << ' ' << a[st].nr3 << ' ' << a[dr].nr1 << ' ' << a[dr].nr2 << ' ' << a[dr].nr3; 
			fout.close();
			return 0;
		}
		while (a[st].sum + a[dr].sum > s)
			--dr;
		
		if (a[st].sum + a[dr].sum == s)
		{
			fout << a[st].nr1 << ' ' << a[st].nr2 << ' ' << a[st].nr3 << ' ' << a[dr].nr1 << ' ' << a[dr].nr2 << ' ' << a[dr].nr3; 
			fout.close();
			return 0;
		}
		
		++st;
	}
	fout << "-1" << '\n';
	fout.close();
	return 0;
}

bool Calc (S a, S b)
{
	return a.sum < b.sum;
}