Pagini recente » Cod sursa (job #2243671) | Cod sursa (job #2385322) | Cod sursa (job #1097452) | Cod sursa (job #2030233) | Cod sursa (job #1357548)
#include <stdio.h>
#include <algorithm>
#define NMAX 107
FILE *fin, *fout;
int n, s, v[NMAX], pos = 0, poz, ans, v1[6];
struct ceva
{
int val;
int p1;
int p2;
int p3;
} arr[NMAX*NMAX*NMAX], temp;
bool comp(ceva a, ceva b)
{
return (a.val < b.val);
}
bool cmp(ceva a, ceva b)
{
return (a.val < b.val);
}
bool f;
int main()
{
fin = freopen("loto.in", "r", stdin);
fout = freopen("loto.out", "w", stdout);
scanf("%d %d", &n, &s);
for(int i = 0; i< n; i++) scanf("%d", &v[i]);
for(int i = 0; i< n; i++)
{
for(int j = 0; j< n; j++)
{
for(int k = 0; k< n; k++)
{
arr[pos].val = v[i] + v[j] + v[k];
arr[pos].p1 = i;
arr[pos].p2 = j;
arr[pos].p3 = k;
pos++;
}
}
}
//for(int i = 0; i< n*n*n; i++) printf("%d ", arr[i].val);
//printf("\n");
std::sort(arr, arr+n*n*n, comp);
//for(int i = 0; i< n*n*n; i++) printf("%d ", arr[i].val);
//printf("\n");
for(int i = 0; i< n; i++)
{
for(int j = 0; j< n; j++)
{
for(int k = 0; k< n; k++)
{
temp.val = s - v[i] - v[j] - v[k];
poz = std::lower_bound(arr, arr+n*n*n, temp, cmp) - arr;
if(arr[poz].val == temp.val)
{
v1[0] = v[i];
v1[1] = v[j];
v1[2] = v[k];
v1[3] = v[arr[poz].p1];
v1[4] = v[arr[poz].p2];
v1[5] = v[arr[poz].p3];
f = 1;
break;
}
}
if(f) break;
}
if(f) break;
}
std::sort(v1, v1+6);
if(f) for(int i = 0; i< 6; i++) printf("%d ", v1[i]);
else printf("-1");
printf("\n");
fclose(fin);
fclose(fout);
return 0;
}