Pagini recente » Cod sursa (job #238989) | Borderou de evaluare (job #1569572) | Cod sursa (job #2349298) | Cod sursa (job #2973643) | Cod sursa (job #600425)
Cod sursa(job #600425)
#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;
}