Pagini recente » Cod sursa (job #1263332) | Cod sursa (job #999433) | Cod sursa (job #1944710) | Cod sursa (job #2041576) | Cod sursa (job #2177859)
#include <bits/stdc++.h>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct str
{
int suma;
int nr1, nr2, nr3;
}v[1000005];
int n, S, nr[105];
int p, poz;
bool cmp( str a, str b )
{
return (a.suma < b.suma);
}
int cautBinar( int st, int dr, int val )
{
int mid;
while( st <= dr )
{
mid = (st + dr)/2;
if( v[mid].suma < val )
st = mid + 1;
else
dr = mid - 1;
}
return st;
}
int main(){
in>>n>>S;
for( int i = 1; i <= n; i++ )
in>>nr[i];
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= n; j++ )
for( int k = 1; k <= n; k++ )
{
p++;
v[p] = { nr[i] + nr[j] + nr[k], nr[i], nr[j], nr[k] };
}
sort( v + 1, v + p + 1, cmp );
for( int i = 1; i <= p; i++ )
{
poz = cautBinar( 1, p, S - v[i].suma );
if( poz >= 1 && poz <= p )
if( v[i].suma + v[poz].suma == S )
{
out<<v[i].nr1<<" "<<v[i].nr2<<" "<<v[i].nr3<<" ";
out<<v[poz].nr1<<" "<<v[poz].nr2<<" "<<v[poz].nr3;
return 0;
}
}
out<<-1;
return 0;
}