Pagini recente » Cod sursa (job #1569211) | Cod sursa (job #2289764) | Cod sursa (job #187831) | Cod sursa (job #1282192) | Cod sursa (job #2011070)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int main(void) {
int s = 0;
int sp = 0;
int level = 0;
int sol[6];
bool found = false;
int n;
int numbers[101];
fstream infile("loto.in", ios::in);
fstream outfile("loto.out", ios::out);
memset(sol, -1, 6*sizeof(int));
// read n, s
infile>>n>>s;
// read numbers
for(int i=0;i<n; ++i)
infile>>numbers[i];
// order vector
sort (numbers, numbers+n);
if ((6*numbers[0]>s)||(6*numbers[n-1]<s))
level = -1;
// back
while (level!=-1) {
//
if(sol[level]!=-1)
sp -= numbers[sol[level]];
sol[level]++;
sp += numbers[sol[level]];
// validation
if (sp>s) {
sp -= numbers[sol[level]];
sol[level] = -1;
level--;
}
else {
if (sol[level]<n) {
if (level==5) { //level == 5
if (sp==s) {
outfile<<numbers[sol[0]]<<" "<<numbers[sol[1]]<<" "<<numbers[sol[2]]<<" "
<<numbers[sol[3]]<<" "<<numbers[sol[4]]<<" "<<numbers[sol[5]]<<"\n";
found = true;
break;
}
}
else {
level++; // rollback sum
}
}
else {
sp -= numbers[sol[level]];
sol[level] = -1;
level--;
}
}
} // end while
if (!found)
outfile<<"-1";
infile.close();
outfile.close();
return 0;
}