Pagini recente » Cod sursa (job #2819159) | Cod sursa (job #2747857)
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
#include <set>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
vector <int> v;
vector<int> primeleTrei;
unordered_map <int, vector<int>> sume;
int N, S, x, sum;
bool loop(){
for(int i = 0; i < N; i++){
for(int j = i; j < N; j++) {
for (int k = j; k < N; k++) {
sum = v[i] + v[j] + v[k];
if (S > sum) {
primeleTrei.push_back(v[i]);
primeleTrei.push_back(v[j]);
primeleTrei.push_back(v[k]);
sume[sum] = primeleTrei;
primeleTrei.clear();
}
if (S > sum && sume.find(S - sum) != sume.end()) {
fout << v[i] << " " << v[j] << " " << v[k] << " ";
for (auto it : sume[S - sum]) {
fout << it << " ";
}
return true;
}
}
}
}
return false;
}
int main(){
fin >> N >> S;
for(int i = 0; i < N; i++){
fin >> x;
v.push_back(x);
}
// bool ok = false;
//
// for(int i = 0; i < N; i++)
// for(int j = i; j < N; j++)
// for(int k = j; k < N; k++){
// sum = v[i] + v[j] + v[k];
// if(S > sum){
// primeleTrei.push_back(v[i]);
// primeleTrei.push_back(v[j]);
// primeleTrei.push_back(v[k]);
// sume[sum] = primeleTrei;
// primeleTrei.clear();
// }
//
// if(S > sum && sume.find(S - sum) != sume.end()){
// fout << v[i] << " " << v[j] << " " << v[k] << " ";
// for (auto it : sume[S - sum]) {
// fout << it << " ";
// }
// i = N;
// j = i;
// k = j;
//
// ok = true;
// }
// }
//
//
// if(ok == false)
//
// fout << -1;
if(loop() == false){
cout << -1;
}
return 0;
}