Pagini recente » Cod sursa (job #1357423) | Cod sursa (job #3238888) | Cod sursa (job #1394318) | Cod sursa (job #2522273) | Cod sursa (job #786013)
Cod sursa(job #786013)
#include<stdio.h>
#include<fstream>
#include<algorithm>
using namespace std;
#define MAXN 102
#define MAXS 1000001
int v[ MAXN ], s[ MAXS ];
int n, sum, i, j, k, nrs, p, aux;
int bs(int x)
{
int left = 1, right = nrs, mid;
while(left <= right)
{
mid = (left + right) / 2;
if(s[mid] > x)
right = mid - 1;
else if(s[mid] < x)
left = mid + 1;
else return 1;
}
return 0;
}
int main()
{
ifstream f("loto.in");
f >> n >> sum;
for(i = 1; i <= n; ++i)
f >> v[i];
f.close();
sort(v + 1, v + n + 1);
FILE *g = fopen("loto.out", "w");
if(sum > v[n] * 6)
{
fprintf(g, "-1\n");
return 0;
}
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j)
for(k = 1; k <= n; ++k)
nrs++, s[nrs] = v[i] + v[j] + v[k];
sort(s + 1, s + nrs + 1);
for(i = 1; i <= nrs; ++i)
{
p = bs(sum - s[i]);
if(p)
{
aux = s[i];
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j)
for(k = 1; k <= n; ++k)
if(v[i] + v[j] + v[k] == aux)
fprintf(g, "%d %d %d ", v[i], v[j], v[k]), i = j = k = n + 1;
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j)
for(k = 1; k <= n; ++k)
if(v[i] + v[j] + v[k] == sum - aux)
fprintf(g, "%d %d %d\n", v[i], v[j], v[k]), i = j = k = n + 1;
return 0;
}
}
fprintf(g, "%d\n", -1);
fclose(g);
return 0;
}