Pagini recente » Cod sursa (job #923543) | Cod sursa (job #2022943) | Cod sursa (job #1295989) | ONIS 2015, Runda 2 | Cod sursa (job #283089)
Cod sursa(job #283089)
#include<stdio.h>
#include<algorithm>
#define MAXN 101
#define MAXTrip 1100000
using namespace std;
typedef struct comp;
struct comp
{
int term1;
int term2;
int term3;
int suma;
}
;
comp com[MAXTrip];
int v[MAXN],i,j,k,N,S,contor,ind,ok, sol;
int cmp (comp a,comp b)
{
return a.suma < b.suma;
}
int bin(int val)
{
int left=1, right = contor, mij;
while(left<=right)
{
mij=(left+right)/2;
if( val == com[mij].suma) return mij;
else if(val > com[mij].suma) left = mij+1;
else if(val < com[mij].suma) right = mij-1;
}
return 0;
}
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 = 1 ; j <= N; j++)
for( k = 1 ; k <= N ; k++)
{
com[++contor].suma = v[i]+v[j]+v[k];
com[contor].term1 = v[i];
com[contor].term2 = v[j];
com[contor].term3 = v[k];
}
sort(com+1,com+contor+1, cmp);
for ( i = 1 ; i <= contor ; i++)
{
if(S-com[i].suma>0)
{
sol = bin(S-com[i].suma);
if(sol)
{
fprintf(out,"%d %d %d %d %d %d ",com[i].term1,com[i].term2,com[i].term3,com[sol].term1,com[sol].term2,com[sol].term3);
ok = 1;
break;
}
}
}
if(ok != 1) fprintf(out,"-1",-1);
return 0;
}