Pagini recente » Cod sursa (job #1645205) | Cod sursa (job #463224) | Cod sursa (job #1728394) | Istoria paginii runda/igorj/clasament | Cod sursa (job #1288228)
#include<stdio.h>
#include<algorithm>
using namespace std;
int n, sum, v[1000007], a[100];
int main(){
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
scanf("%d %d", &n, &sum);
for(int i = 1; i <= n; ++ i)
scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
for(int i = 1; i <= n; ++ i)
for(int j = 1; j <= n; ++ j)
for(int k = 1; k <= n; ++ k)
v[++ v[0]] = a[i] + a[j] + a[k];
sort(v + 1, v + v[0] + 1);
int p2 = v[0];
for(int p1 = 1; p1 <= v[0]; ++ p1){
while(v[p2] > sum - v[p1])
-- p2;
if(v[p2] == sum - v[p1] && p2 != 0 && sum - v[p1] != 0){
int ok = 0;
for(int i = 1; i <= n && ok == 0; ++ i)
for(int j = 1; j <= n && ok == 0; ++ j)
for(int k = 1; k <= n && ok == 0; ++ k)
if(a[i] + a[j] + a[k] == v[p1]){
printf("%d %d %d ", a[i], a[j], a[k]);
ok = 1;
}
ok = 0;
for(int i = 1; i <= n && ok == 0; ++ i)
for(int j = 1; j <= n && ok == 0; ++ j)
for(int k = 1; k <= n && ok == 0; ++ k)
if(a[i] + a[j] + a[k] == sum - v[p1]){
printf("%d %d %d", a[i], a[j], a[k]);
ok = 1;
}
return 0;
}
}
printf("-1");
return 0;
}