Pagini recente » Cod sursa (job #132225) | Cod sursa (job #1874995) | Cod sursa (job #302692) | Cod sursa (job #1607052) | Cod sursa (job #2221343)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 105;
int num[MAXN], sol[MAXN], coef[MAXN];
int n, s;
void backtrack(int pos){
if(pos == n + 1){
int sum = 0, total = 0;
for(int i = 1;i <= n; ++i){
sum += sol[i] * num[i];
total += sol[i];
}
if(sum == s && total == 6){
for(int i = 1; i <= n; ++i)
coef[i] = sol[i];
}
return;
}
for(int i = 1; i <= 6; ++i){
sol[pos] = i;
backtrack(pos + 1);
sol[pos] = 0;
}
return;
}
int main()
{
ifstream fin("loto.in");
ofstream fout("loto.out");
fin >> n >> s;
for(int i = 1; i <= n; ++i)
fin >> num[i];
sort(num + 1, num + n + 1);
if(6 * num[n] < s)
fout << -1;
else{
backtrack(1);
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= coef[i]; ++j)
fout << num[i] << " ";
}
}
return 0;
}