Pagini recente » Cod sursa (job #17327) | Cod sursa (job #1253176) | Cod sursa (job #2956929) | Cod sursa (job #870768) | Cod sursa (job #1770730)
#include <algorithm>
#include <fstream>
using namespace std;
struct grup
{
int x, y, z;
int suma;
};
ifstream cin("loto.in");
ofstream cout("loto.out");
const int NMAX = 105;
int v[NMAX];
int contor;
grup a[NMAX * NMAX * NMAX];
bool cmp(grup a, grup b)
{
return a.suma < b.suma;
}
int exista(int x)
{
int st = 1, dr = contor;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(a[mij].suma == x)
return mij;
if(a[mij].suma < x)
st = mij + 1;
else
dr = mij - 1;
}
return -1;
}
int main()
{
int n, s;
cin >> n >> s;
for(int i = 1; i <= n; i ++)
cin >> v[i];
contor = 0;
for(int i = 1; i <= n; i ++)
{
for(int j = i; j <= n; j ++)
{
for(int k = j; k <= n; k ++)
{
contor ++;
a[contor].x = i;
a[contor].y = j;
a[contor].z = k;
a[contor].suma = v[i] + v[j] + v[k];
}
}
}
sort(a + 1, a + contor + 1, cmp);
for(int i = 1; i <= contor; i ++)
{
int j = exista(s - a[i].suma);
if(j != -1)
{
cout << v[a[i].x] << " " << v[a[i].y] << " " << v[a[i].z] << " "<< v[a[j].x] << " " << v[a[j].y] << " " << v[a[j].z];
return 0;
}
}
cout << "-1";
return 0;
}