Pagini recente » Cod sursa (job #3314037) | Borderou de evaluare (job #661521) | Cod sursa (job #3359459)
#include <bits/stdc++.h>
#define MAXN 100
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int v[MAXN + 1];
struct elem{
int x, y, z, s;
};
int cmp(elem A, elem B){
return A.s < B.s;
}
vector <elem> gen(int n){
int i, j, k;
vector <elem> rez;
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
for(k = 1; k <= n; k++){
rez.push_back({v[i], v[j], v[k], v[i] + v[j] + v[k]});
}
}
}
return rez;
}
int main()
{
int n, suma, i, ok, pos;
elem aux;
fin >> n >> suma;
for(i = 1; i <= n; i++){
fin >> v[i];
}
vector <elem> fir3, sec3;
fir3 = sec3 = gen(n);
sort(sec3.begin(), sec3.end(), cmp);
i = ok = 0;
while(i < fir3.size() && !ok){
if(suma > fir3[i].s){
aux.x = aux.y = aux.z = 0;
aux.s = suma - fir3[i].s;
pos = lower_bound(sec3.begin(), sec3.end(), aux, cmp) - sec3.begin();
if(pos < sec3.size() && fir3[i].s + sec3[pos].s == suma){
ok = 1;
}
}
i++;
}
i--;
if(!ok){
fout << "-1\n";
}else{
fout << fir3[i].x << " " << fir3[i].y << " " << fir3[i].z << " " << sec3[pos].x << " " << sec3[pos].y << " " << sec3[pos].z << "\n";
}
return 0;
}