Cod sursa(job #2354746)

Utilizator skoda888Alexandru Robert skoda888 Data 25 februarie 2019 15:40:55
Problema Loto Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb



#include <iostream>
#include <fstream>
#include <map>


const int NMAX = 103;


struct SumeDe3 {

	int a;
	int b;
	int c;

};


int NumereLoto[NMAX];
std::map <int, SumeDe3> SumeDeTrei;

int main() {

	std::ifstream in("loto.in");
	std::ofstream out("loto.out");


	int N, S;
	in >> N >> S;

	for (int i = 1; i <= N; ++i) {
		in >> NumereLoto[i];
	}

	//{NumereLoto[i] + NumereLoto[j] + NumereLoto[k], NumereLoto[i], NumereLoto[j], NumereLoto[k]}
	for (int i = 1; i <= N; ++i) {
		for (int j = 1; j <= N; ++j) {
			for (int k = 1; k <= N; ++k) {
				int suma = NumereLoto[i] + NumereLoto[j] + NumereLoto[k];

				SumeDe3 Temp = { NumereLoto[i], NumereLoto[j], NumereLoto[k] };
				SumeDeTrei[suma] = Temp;
			}
		}
	}

	for (int i = 1; i <= N; ++i) {
		for (int j = 1; j <= N; ++j) {
			for (int k = 1; k <= N; ++k) {
				int suma = S - NumereLoto[i] - NumereLoto[j] - NumereLoto[k];

				if (SumeDeTrei.find(suma) != SumeDeTrei.end()) {
					out << NumereLoto[i] << ' ' << NumereLoto[j] << ' ' << NumereLoto[k] << ' ' << SumeDeTrei[suma].a << ' ' << SumeDeTrei[suma].b << ' ' << SumeDeTrei[suma].c;
					return 0;
				}
			}	
		}
	}
	
	out << -1;
	system("PAUSE");
	return 0;
}