Pagini recente » Cod sursa (job #1575929) | Cod sursa (job #1837532) | Cod sursa (job #668732) | Cod sursa (job #1601917) | Cod sursa (job #1207871)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int MAXA = 110;
struct IJK{
int s, i, j, k;
};
int n, nr, s, su;
int a[MAXA];
int sum;
int d, mij;
IJK v[1000009];
bool ok = true;
bool Comp( const IJK& n1, const IJK& n2 )
{
return n1.s < n2.s;
}
int main()
{
int i, j, k;
fin >> n >> sum;
for( i = 1; i <= n; i++) fin >> a[i];
for( i = 1; i <= n; i++ )
{
for( j = i; j <= n; j++ )
{
for( k = j; k <= n; k++ )
{
v[++nr].s = a[i] + a[j] + a[k];
v[nr].i = a[i];
v[nr].j = a[j];
v[nr].k = a[k];
}
}
}
sort( v + 1, v + 1 + nr, Comp );
for ( i = 1; i <= n && ok; i++ )
{
su = sum - v[i].s;
s = 1; d = nr;
while ( s <= d && ok )
{
mij = ( s + d ) / 2;
if ( su == v[mij].s )
{
fout << v[i].i << ' ' << v[i].j << ' ' << v[i].k << ' ';
fout << v[mij].i << ' ' << v[mij].j << ' ' << v[mij].k << '\n';
ok = false;
}
if ( su > v[mij].s ) s = mij + 1;
if ( su < v[mij].s ) d = mij - 1;
}
}
if ( ok )
fout << "-1" << '\n';
fin.close();
fout.close();
return 0;
}