Pagini recente » Cod sursa (job #1914022) | Cod sursa (job #761137)
Cod sursa(job #761137)
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
#define pb push_back
int n, s, k, a, b, c, begin, end, mid, sum, gasit, x;
vector<int> val;
vector<int> v;
int main()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
int i, j;
scanf("%i %i", &n, &s);
for(i = 1; i <= n; i++)
{
scanf("%i", &x);
val.pb(x);
}
for(i = 0; i < (int)(val.size()); i++)
for(j = i; j < (int)(val.size()); j++)
for(k = j; k < (int)(val.size()); k++)
v.pb(val[i] + val[j] + val[k]);
sort(v.begin(), v.end());
for(i = 0; i < (int)(val.size()); i++)
for(j = i; j < (int)(val.size()); j++)
for(k = j; k < (int)(val.size()); k++)
if(!gasit)
{
sum = val[i] + val[j] + val[k];
begin = -1, end = (int)(v.size());
while(end - begin > 1)
{
mid = begin + (end - begin) / 2;
if(sum + v[mid] > s) end = mid;
else begin = mid;
}
if(v[mid] + sum == s)
{
printf("%i %i %i ", val[i], val[j], val[k]);
for(a = 0; a < (int)(val.size()); a++)
for(b = 0; b < (int)(val.size()); b++)
for(c = 0; c < (int)(val.size()); c++)
if(!gasit)
if(val[a] + val[b] + val[c] + sum == s)
printf("%i %i %i\n", val[a], val[b], val[c]), gasit = 1;
gasit = 1;
}
}
if(!gasit) printf("-1\n");
scanf("%i", &i);
return 0;
}