Pagini recente » Cod sursa (job #2842564) | Cod sursa (job #1584449) | Cod sursa (job #2014183) | Cod sursa (job #3151856) | Cod sursa (job #2009883)
#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){
int imin, imax;
if (numbers[n/2]<sp) {
imin = n/2;
imax = n;
}
else {
imin = 0;
imax = n/2;
}
for(int i=imin; (i<imax) && (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;
}