Cod sursa(job #2011070)

Utilizator frodobiosif aug frodob Data 15 august 2017 00:51:40
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#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;
}