Pagini recente » Monitorul de evaluare | Cod sursa (job #314262) | Cod sursa (job #2244697) | Cod sursa (job #645701) | Cod sursa (job #1357553)
#include <stdio.h>
#include <algorithm>
#define NMAX 102
FILE *fin, *fout;
int n, s, v[NMAX], pos = 0, poz, ans, v1[6];
struct ceva
{
int val;
} 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[poz%3];
poz/=3;
v1[4] = v[poz%3];
poz/=3;
v1[5] = v[poz%3];
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;
}