Cod sursa(job #2747046)

Utilizator Teodora67IDKIDKIDKDIKD Teodora67 Data 28 aprilie 2021 19:46:26
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
/** vom impartii suma de 6 numere in suma a 3 numere cu 3 numere
vom calcula toate sumele posibilie care pot fi obtinute cu 3 numere
si vom cauta S-suma de 3 numere in frecventa pentru a vedea daca exista o configuratie care adunata cu suma curenta de 3 numere sa dea
S
pentru ca sumele pot sa fie si negativa vom folosi structura de date unordered_map care este o frecventa
care poate retine numere negative
*/

#include <unordered_map>
#include <fstream>
#include <iostream>

using namespace std;

ifstream fin ("loto.in");
ofstream fout ("loto.out");

const int Dim = 101;
int A[Dim],n,S;
struct str{
int a,b,c;
};
unordered_map < int, str > M;

int main() {

	fin >> n >> S;
	for ( int i = 1; i <= n; ++i)
		fin >> A[i];
	for ( int i = 1; i <= n; ++i)
		for ( int j = 1; j <= n; ++j)
			for ( int k = 1; k <= n; ++k) {
				int s = A[i] + A[j] + A[k]; //imi calculez suma de 3 numere
				M[s] = {A[i],A[j],A[k]};//o pun in frecventa
				if (M.find(S - s) != M.end() ) { //vad daca exista perechea ei
					fout << A[i] << " " << A[j] << " " << A[k]  << " " << M[S - s].a << " " << M[S - s].b << " " << M[S - s].c;
					return 0;
				}
			}
	fout << -1;
}