Pagini recente » Cod sursa (job #615653) | Cod sursa (job #472710) | Cod sursa (job #598131) | Cod sursa (job #426622) | Cod sursa (job #1417443)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int SMAX = 666013;
const int NMax = 105;
struct node{
int sum,x,y,z;
};
vector < node > a[SMAX];
int v[NMax];
bool cauta(int val){
if(val > 0){
int rd = val % SMAX;
for(int i = 0; i < a[rd].size(); i++){
if(a[rd][i].sum == val){
fout << a[rd][i].x << " " << a[rd][i].y << " " << a[rd][i].z << " ";
return 1;
}
}
}
return 0;
}
int main()
{
int n,s;
fin >> n >> s;
for(int i = 1; i <= n; i++){
fin >> v[i];
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
for(int k = 1; k <= n; k++){
int gh = v[i] + v[j] + v[k];
if(gh < s){
int rd = gh % SMAX;
int l;
for(l = 0; l < a[rd].size(); l++){
if(a[rd][l].sum == gh){
l = SMAX;
}
}
if(l < SMAX){
node ans;
ans.sum = gh;
ans.x = v[i];
ans.y = v[j];
ans.z = v[k];
a[rd].push_back(ans);
}
}
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
for(int k = 1; k <= n; k++){
int val = s - v[i] - v[j] - v[k];
if(cauta(val)){
fout << v[i] << " " << v[j] << " " << v[k];
return 0;
}
}
}
}
fout << -1;
return 0;
}