Pagini recente » Cod sursa (job #2602953) | Cod sursa (job #2943328) | Cod sursa (job #2370460) | Cod sursa (job #2179904) | Cod sursa (job #663611)
Cod sursa(job #663611)
#include <fstream>
#define l 105
using namespace std;
ifstream f ( "loto.in" );
ofstream g ( "loto.out" );
long long ok1,ok2,sum[l*l*l*3],v[l],N,i,j,t,n,S,V1,V2;
int caut ( int val )
{
int step=1,p=0;
for ( ; step<N; step*=2 );
for ( ; step; step/=2 )
if ( p+step<=N&&sum[p+step]<=val ) p+=step;
if ( sum[p]==val ) return val;
else return -1;
}
int main()
{
f>>n>>S;
for ( i=1; i<=n; i++ ) f>>v[i];
for ( i=1; i<=n; i++ )
for ( j=1; j<=n; j++ )
for ( t=1; t<=n; t++ ) {
N++;
sum[N]=v[t]+v[j]+v[i];
}
for ( i=1; i<=N; i++ )
if ( caut ( S-sum[i] )!=-1) {
V1=sum[i];
V2=caut ( S-sum[i] );
break;
}
if (V1+V2!=S) g<<-1; else
for ( i=1; i<=n; i++ )
for ( j=1; j<=n; j++ )
for ( t=1; t<=n; t++ )
{
if ( ok1==0&&v[i]+v[j]+v[t]==V1 ) {
g<<v[i]<<" "<<v[j]<<" "<<v[t]<<" ";
ok1=1;
}
if ( ok2==0&&v[i]+v[j]+v[t]==V2 ) {
g<<v[i]<<" "<<v[j]<<" "<<v[t]<<" ";
ok2=1;
}
}
f.close();
g.close();
return 0;
}