Cod sursa(job #600425)

Utilizator luckyme91wiz kid luckyme91 Data 1 iulie 2011 17:16:05
Problema Loto Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
long int s;
int ok = 1;
vector <int> num;
ifstream in ("loto.in");
ofstream out ("loto.out");

void solve ()
{
	int i,j,k,l,m,n;
	for (i = num.size() - 1; ok && i >= 0 && num[i] * 6 >= s; i--)
	for (j = i;ok && j >= 0 && num[i] + 5*num[j] >= s && num[i] + 5 * num[0] <= s; j--)
	for (k = j;ok && k >= 0 && num[i] + num[j] + 4 * num[k] >= s && num[i] + num[j] + 4 * num[0] <= s; k--)
	for (l = k;ok && l >= 0 && num[i] + num[j] + num[k] + 3*num[l] >= s && num[i]  + num[j] + num[k] + 3 * num[0] <= s; l--)
	for (m = l;ok && m >= 0 && num[i] + num[j] + num[k] + num[l] + 2*num[m] >= s && num[i] + num[j] + num[k] + num[l] + 2 * num[0] <= s; m--)
	for (n = m;ok && n >= 0 && num[i] + num[j] + num[k] + num[l] + num[m] + num[n] >= s ;n--)
		if (num[i] + num[j] + num[k] + num[l] + num[m] + num[n] == s)
		{
			ok = 0;
			out << num[i] <<" "<<num[j]<<" "<<num[k]<<" "<<num[l]<<" "<<num[m]<<" "<<num[n];
		}
	if (ok)
		out << -1;
}
	


int main() {


long int n, x, i;

in >> n >> s;

for (; n > 0; n--)
{
	in >> x;
	num.push_back(x);
}
sort (num.begin(), num.begin() + num.size() - 1);
solve ();

return 0;
}