Pagini recente » Cod sursa (job #503984) | Cod sursa (job #1531590) | Cod sursa (job #555551) | Cod sursa (job #1401757) | Cod sursa (job #2010616)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
// globals
int sol[6];
bool found = false;
int n;
int numbers[101];
fstream outfile("loto.out", ios::out);
// prototypes
void recursiv(int level, int sp);
int main(void) {
int s = 0;
fstream infile("loto.in", ios::in);
// read n
infile>>n;
// read the sum v
infile>>s;
// read numbers
for(int i=0;i<n; ++i)
infile>>numbers[i];
// order vector
sort (numbers, numbers+n);
if (6*numbers[n-1]>=s) // start
recursiv(0, s);
//
if (!found)
outfile<<"-1";
infile.close();
outfile.close();
return 0;
}
void recursiv(int level, int sp){
if (sp<numbers[n/2]) {
for(int i=0; (i<n) && (numbers[i]<=sp); ++i) {
if (found)
break;
sol[level] = numbers[i];
if (level<5)
recursiv(level+1, sp-numbers[i]);
else if ((level==5) && (numbers[i]==sp)) {
found = true;
outfile<<sol[0]<<" "<<sol[1]<<" "<<sol[2]<<" "
<<sol[3]<<" "<<sol[4]<<" "<<sol[5]<<"\n";
break;
}
}
}
else {
for(int i=n-1; (i>=0) && (numbers[i]<=sp); --i) {
if (found)
break;
sol[level] = numbers[i];
if (level<5)
recursiv(level+1, sp-numbers[i]);
else if ((level==5) && (numbers[i]==sp)) {
found = true;
outfile<<sol[0]<<" "<<sol[1]<<" "<<sol[2]<<" "
<<sol[3]<<" "<<sol[4]<<" "<<sol[5]<<"\n";
break;
}
}
}
return;
}