Pagini recente » Cod sursa (job #2793585) | Cod sursa (job #2067369) | Cod sursa (job #448537) | Cod sursa (job #2250259) | Cod sursa (job #2177829)
#include <bits/stdc++.h>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct str
{
int suma;
int nr1, nr2, nr3;
void make_item( int a, int b, int c, int d )
{
suma = a;
nr1 = b;
nr2 = c;
nr3 = d;
}
}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( 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].make_item( nr[i] + nr[j] + nr[k], nr[i], nr[j], nr[k] );
}
for( int i = 1; i <= p; i++ )
{
poz = cautBinar( 1, p, S - v[i].suma );
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;
}