Pagini recente » Cod sursa (job #15754) | Cod sursa (job #1284951) | Cod sursa (job #1014885) | Cod sursa (job #1783436) | Cod sursa (job #2177864)
#include <bits/stdc++.h>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
tuple< int, int, int, int > v[1000005];
int n, S, nr[105];
int p, poz;
int cautBinar( int st, int dr, int val )
{
int mid;
while( st <= dr )
{
mid = (st + dr)/2;
if( get<0>(v[mid]) == val )
return mid;
if( get<0>(v[mid]) < val )
st = mid + 1;
else
dr = mid - 1;
}
return -1;
}
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++ )
v[++p] = make_tuple( nr[i] + nr[j] + nr[k], nr[i], nr[j], nr[k] );
sort( v + 1, v + p + 1 );
for( int i = 1; i <= p; i++ )
{
poz = cautBinar( 1, p, S - get<0>(v[i]) );
if( poz != -1 )
{
out<<get<1>(v[i])<<" "<<get<2>(v[i])<<" "<<get<3>(v[i])<<" ";
out<<get<1>(v[poz])<<" "<<get<2>(v[poz])<<" "<<get<3>(v[poz]);
return 0;
}
}
out<<-1;
return 0;
}