Pagini recente » Cod sursa (job #1228319) | Cod sursa (job #521679) | Cod sursa (job #1670414) | Cod sursa (job #743491) | Cod sursa (job #283054)
Cod sursa(job #283054)
#include<stdio.h>
#include<algorithm>
#define MAXN 101
#define MAXTrip 400000
using namespace std;
typedef struct comp;
struct comp
{
int term1;
int term2;
int term3;
}
;
comp com[MAXTrip];
int Triplets[MAXTrip],v[MAXN],i,j,k,N,S,contor,ind,ok1;
int bin(int val)
{
int ok = 0,left=1,right=contor,sol=0,mij;
while(ok==0&&left<=right)
{
mij=left+(right-left)/2;
if( val == Triplets[mij]) {sol = mij;ok = 1;}
else if(val > Triplets[mij]) left = mij+1;
else if(val < Triplets[mij]) right = mij-1;
}
return sol;
}
int main()
{
FILE*in=fopen("loto.in","r");
FILE*out=fopen("loto.out","w");
fscanf(in,"%d %d",&N,&S);
for( i = 1 ; i <= N ; i++)
fscanf( in ,"%d", &v[i]);
for( i = 1 ; i <= N ; i++)
for( j = i ; j <= N; j++)
for( k = j ; k <= N ; k++)
{
Triplets[++contor]=v[i]+v[j]+v[k];
com[contor].term1=v[i];
com[contor].term2=v[j];
com[contor].term3=v[k];
}
sort(Triplets+1,Triplets+contor+1);
for ( i = 1 ; i <= contor ; i++)
{
if(bin(S-Triplets[i]))
{
ind = bin(S-Triplets[i]);
fprintf(out,"%d %d %d %d %d %d ",com[i].term1,com[i].term2,com[i].term3,com[ind].term1,com[ind].term2,com[ind].term3);
ok1=1;
break;
}
}
if(ok1!=1) fprintf(out,"-1",-1);
return 0;
}