Pagini recente » Cod sursa (job #149085) | Cod sursa (job #2334421) | Cod sursa (job #1492489) | Cod sursa (job #523853) | Cod sursa (job #2208222)
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
struct index
{
int i1, i2, i3;
int sum;
};
ifstream in("loto.in");
ofstream out("loto.out");
const int maxn = 105;
int v[maxn];
int m;
index a[maxn * maxn * maxn];
bool cmp(index a, index b)
{
return a.sum < b.sum;
}
int exista(int x)
{
int st = 1, dr = m;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(a[mij].sum == x)
return mij;
if(a[mij].sum < x)
st = mij + 1;
else
dr = mij - 1;
}
return -1;
}
int main()
{
int n, s;
in >> n >> s;
for(int i = 1; i <= n; i ++)
in >> v[i];
m = 0;
for(int i1 = 1; i1 <= n; i1 ++)
{
for(int i2 = i1; i2 <= n; i2 ++)
{
for(int i3 = i2; i3 <= n; i3 ++)
{
m ++;
a[m].i1 = i1;
a[m].i2 = i2;
a[m].i3 = i3;
a[m].sum = v[i1] + v[i2] + v[i3];
}
}
}
sort(a + 1, a + m + 1, cmp);
for(int i = 1; i <= m; i ++)
{
int j = exista(s - a[i].sum);
if(j != -1)
{
out << v[a[i].i1] << " " << v[a[i].i2] << " " << v[a[i].i3] << " ";
out << v[a[j].i1] << " " << v[a[j].i2] << " " << v[a[j].i3] << '\n';
out.close();
return 0;
}
}
out << "-1";
return 0;
}