Cod sursa(job #600436)

Utilizator luckyme91wiz kid luckyme91 Data 1 iulie 2011 17:47:45
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
long int s;
int ok = 1;
ifstream in ("loto.in");
ofstream out ("loto.out");
int comp (const void *a , const void *b)
{
	return *(int*) a - *(int*)b;
}
int main() {


long int n, x, i;

in >> n >> s;
vector <int> num(n);

for (i = 0;i < n; i++)
{
	in >> num[i];
}
//sort (num.begin(), num.begin() + num.size());
qsort (&num[0], num.size(), sizeof(num[0]), comp);

int j,k,l,m;
	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;

return 0;
}