Pagini recente » Cod sursa (job #1623024) | Cod sursa (job #953219) | Cod sursa (job #127073) | Cod sursa (job #2775291) | Cod sursa (job #2001234)
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
FILE *F=fopen("loto.in", "r"), *G=fopen("loto.out", "w");
int n, p, S, s[350003], L[666014], nxt[350003], vl[350003], v[350003], l, x;
const int MOD = 666013;
pair<int, pair<int, int> > pr[350003];
inline void adaug(int p, int x)
{
vl[p] = x;
nxt[p] = L[x%MOD];
L[x%MOD] = p;
}
inline int caut(int x)
{
p = L[x%MOD];
while(p)
if(vl[p] == x) return p;
else p = nxt[p];
return 0;
}
int main()
{
fscanf(F, "%d%d ", &n, &S);
for(int i = 1; i <= n; ++ i)
fscanf(F, "%d ", &v[i]);
for(int i = 1; i <= n; ++ i)
for(int j = i; j <= n; ++ j)
for(int k = j; k <= n; ++ k)
{
s[++l] = v[i]+v[j]+v[k];
pr[l]={i, {j, k}};
adaug(l, s[l]);
}
for(int i = 1; i <= l; ++ i)
{
x = caut(S-s[i]);
if(x)
{
fprintf(G, "%d %d %d ", v[pr[i].f], v[pr[i].s.f], v[pr[i].s.s]);
fprintf(G, "%d %d %d", v[pr[x].f], v[pr[x].s.f], v[pr[x].s.s]);
return 0;
}
}
fprintf(G, "%d", -1);
return 0;
}