Pagini recente » Cod sursa (job #38559) | Cod sursa (job #734073) | Cod sursa (job #2399529) | Cod sursa (job #2696021) | Cod sursa (job #2647341)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX=100;
int v[NMAX+5];
struct SUMA_3_NUMERE
{
int t1,t2,t3,s;
};
SUMA_3_NUMERE s3[NMAX*NMAX*NMAX+5];
bool cmp(SUMA_3_NUMERE a,SUMA_3_NUMERE b)
{
return a.s<b.s;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int n,suma,i,j,k,m=0,st,dr;
bool gasit=0;
scanf("%d%d",&n,&suma);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
//formam toate sumele de 3 nr
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
for(k=j;k<=n;k++)
{
m++;
s3[m].t1=v[i];
s3[m].t2=v[j];
s3[m].t3=v[k];
s3[m].s=v[i]+v[j]+v[k];
}
}
}
//pentru a forma sumele de 6 numere avem nevoie de doua grupe de cate 3-doua pozitii din vectorul s3; cautam binar cele doua grupe care au impreuna suma s
sort(s3+1,s3+m+1,cmp);
st=1;
dr=m;
while(st<=dr && !gasit)
{
if(s3[st].s+s3[dr].s==suma)
{
printf("%d %d %d %d %d %d",s3[st].t1,s3[st].t2,s3[st].t3,s3[dr].t1,s3[dr].t2,s3[dr].t3);
gasit=1;
}
else
{
if(s3[st].s+s3[dr].s<suma)
st++;
else
dr--;
}
}
if(!gasit)
printf("-1");
return 0;
}