Pagini recente » Cod sursa (job #82990) | Cod sursa (job #1822325) | Cod sursa (job #219809) | Cod sursa (job #1574541) | Cod sursa (job #172673)
Cod sursa(job #172673)
#include <stdio.h>
#include <algorithm>
#define NMAX 101
using namespace std;
int V[NMAX], A[NMAX*NMAX*NMAX], N, S;
int main()
{
int i, j, k, p1, p2, na = 0, gata = 0;
freopen("loto.in", "r", stdin);
scanf("%d %d", &N, &S);
for (i = 0; i < N; i++) scanf("%d", V+i);
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
for (k = 0; k < N; k++) A[na++] = V[i]+V[j]+V[k];
sort(&A[0], &A[na]);
p1 = 0; p2 = na-1;
while (gata == 0)
{
if (p1 > p2) gata = 1;
if (A[p1]+A[p2] == S) gata = 1;
else
if (A[p1]+A[p2] > S) p2--;
else
if (A[p1]+A[p2] < S) p1++;
}
freopen("loto.out", "w", stdout);
if (p1 <= p2)
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
for (k = 0; k < N; k++)
{
if ((p1 >= 0) && ((V[i]+V[j]+V[k]) == A[p1]))
{
printf("%d %d %d ", V[i], V[j], V[k]);
p1 = -1;
}
if ((p2 >= 0) && ((V[i]+V[j]+V[k]) == A[p2]))
{
printf("%d %d %d ", V[i], V[j], V[k]);
p2 = -1;
}
if (p1+p2 == -2) i = j = k = 2*N;
}
if (i < 2*N) printf("-1");
printf("\n");
return 0;
}