Pagini recente » Cod sursa (job #2164367) | Cod sursa (job #1847889) | Cod sursa (job #737765) | Cod sursa (job #990228) | Cod sursa (job #2659982)
#include <fstream>
#include <algorithm>
#define NMAX 101
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n, sum, nr_sume;
int a[NMAX];
struct Sum_type{
int sum;
int a;
int b;
};
Sum_type v[NMAX * NMAX * NMAX];
bool cmp(Sum_type a, Sum_type b)
{
if(a.sum > b.sum)
return 1;
return 0;
}
int main()
{
f >> n >> sum;
for(int i = 1; i <= n; i++)
f >> a[i];
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
for(int k = 1; k <= n; k++)
{
nr_sume++;
v[nr_sume].sum = a[i] + a[j] + a[k];
v[nr_sume].a = a[i];
v[nr_sume].b = a[j];
}
}
}
sort(v + 1, v + 1 + nr_sume, cmp);
for(int i = 1; i <= nr_sume; i++)
{
int need_to_find = sum - v[i].sum;
int st = 1, dr = nr_sume;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(v[mij].sum == need_to_find)
{
g << v[i].a << " " << v[i].b << " " << v[i].sum - v[i].a - v[i].b << " " << v[mij].a << " " << v[mij].b << " " << v[mij].sum - v[mij].a - v[mij].b << "\n";
return 0;
}
if(v[mij].sum < need_to_find)
st = mij + 1;
else
dr = mij - 1;
}
}
g << "-1\n";
return 0;
}