Pagini recente » Cod sursa (job #1352927) | Cod sursa (job #2182113) | Cod sursa (job #2747046)
/** 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;
}