Pagini recente » Cod sursa (job #2815897) | Cod sursa (job #402567) | Cod sursa (job #592831) | Istoria paginii runda/sh_pregatire_spartanica/clasament | Cod sursa (job #2938009)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int NMAX = 100;
int v[NMAX + 1];
struct ceva{
int sum, a, b, c;
};
vector <ceva> vals;
bool cmp(ceva a, ceva b){
return a.sum < b.sum;
}
signed 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++){
vals.push_back({v[i] + v[j] + v[k], v[i], v[j], v[k]});
}
sort(vals.begin(), vals.end(), cmp);
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
for(int k = 1; k <= n; k++){
int toFind = s - (v[i] + v[j] + v[k]);
int st = 0, dr = (int)vals.size() - 1, ans = 0;
while(st <= dr){
int mij = (st + dr);
if(vals[mij].sum <= toFind)
st = mij + 1, ans = mij;
else
dr = mij - 1;
}
if(vals[ans].sum == toFind){
fout << v[i] << ' ' << v[j] << ' ' << v[k] << ' ' << vals[ans].a << ' ' << vals[ans].b << ' ' << vals[ans].c << '\n';
return 0;
}
}
fout << -1 << '\n';
return 0;
}