Pagini recente » Cod sursa (job #2676850) | Cod sursa (job #1763396) | Cod sursa (job #391008) | Cod sursa (job #811664) | Cod sursa (job #3037569)
#include <fstream>
#include <algorithm>
#define NMAX 102
using namespace std;
ifstream cin("loto.in");
ofstream cout("loto.out");
int n, sumfin, total, crt;
int st, dr, mij, dif;
int v[NMAX];
struct Sume
{
int suma;
int unu, doi, trei;
}sume[NMAX * NMAX * NMAX];
bool sortaresuma(Sume a, Sume b)
{
return a.suma < b.suma;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int i, j, k;
cin >> n >> sumfin;
for(i = 1; i <= n; i++)
cin >> v[i];
sort(v + 1, v + n + 1);
total = 0;
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
for(k = 1; k <= n; k++)
{
sume[++total].suma = v[i] + v[j] + v[k];
sume[total].unu = i;
sume[total].doi = j;
sume[total].trei = k;
}
}
}
sort(sume + 1, sume + total + 1, sortaresuma);
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
for(k = 1; k <= n; k++)
{
crt = v[i] + v[j] + v[k];
dif = sumfin - crt;
st = 0; dr = total + 1;
while(dr - st > 1)
{
mij = (st + dr) / 2;
if(sume[mij].suma >= dif)
dr = mij;
else st = mij;
}
if(dr <= total && sume[dr].suma == dif)
{
cout << v[i] << ' ';
cout << v[j] << ' ';
cout << v[k] << ' ';
cout << sume[dr].unu << ' ';
cout << sume[dr].doi << ' ';
cout << sume[dr].trei << '\n';
return 0;
}
}
}
}
cout << "-1\n";
return 0;
}