Pagini recente » Cod sursa (job #2682430) | Cod sursa (job #519773) | Cod sursa (job #2525386) | Cod sursa (job #3201684) | Cod sursa (job #3129827)
#include <fstream>
#include <iostream>
#include <queue>
#include <unordered_map>
std::ifstream in;
std::ofstream out;
int main() {
std::unordered_map<int, std::vector<int>> mp;
int n, S, i, j, k, l, v[105];
bool f = false;
std::priority_queue< int, std::vector<int>, std::greater<int> >rez;
in.open("loto.in");
in>>n>>S;
for(i = 0; i < n; i++)
in>>v[i];
in.close();
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
for(k = 0; k < n; k++)
if (mp.find(v[i] + v[j] + v[k]) == mp.end()) {
mp[v[i] + v[j] + v[k]].push_back(v[i]);
mp[v[i] + v[j] + v[k]].push_back(v[j]);
mp[v[i] + v[j] + v[k]].push_back(v[k]);
}
for(i = 0; i < n and !f; i++)
for(j = 0; j < n and !f; j++)
for(k = 0; k < n and !f; k++)
{
int sum = S-(v[i]+v[j]+v[k]);
if(mp.find(sum) != mp.end()){
rez.push(v[i]);
rez.push(v[j]);
rez.push(v[k]);
for(l = 0; l < 3; l++)
rez.push(mp.find(sum)->second[l]);
f = true;
}
}
out.open("loto.out");
if(rez.empty()){
out<<-1;
}
while(!rez.empty()) {
out << rez.top() << ' ';
rez.pop();
}
out.close();
return 0;
}