Pagini recente » Cod sursa (job #1028143) | Cod sursa (job #1001896) | Cod sursa (job #3236131) | Cod sursa (job #2618846) | Cod sursa (job #107468)
Cod sursa(job #107468)
#include<fstream.h>
#define max 1000000
ifstream f("loto.in");
ofstream g("loto.out");
long s[max],s1[max],s2[max],s3[max],n,m,x[102],cont,y;
int i,j,l,p,ok ;
int calcul(int st,int dr,int suma)
{
int mij;
mij=(st+dr)/2;
if(mij==st&& mij==dr && s[mij]!=suma)
return 0;
if(s[mij]==suma)
return mij;
else
{
if(suma<s[mij])
calcul(st,mij-1,suma);
else
calcul(mij+1,dr,suma);
}
}
void imparte (int st,int dr,int &p)
{
int i,j,ii,jj,aux;
i=st;
j=dr;
ii=0;
jj=-1;
while(i<j)
{
if(s[i]>s[j])
{
aux=s[i];
s[i]=s[j];
s[j]=aux;
aux=ii;
ii=-jj;
jj=-aux;
}
i=i+ii;
j=j+jj;
}
p=i;
}
void qsort(int st,int dr)
{
if(st<dr)
{
imparte(st,dr,p);
qsort(st,p-1);
qsort(p+1,dr);
}
}
int main()
{
f>>n;
f>>m;
for(i=1;i<=n;i++)
f>>x[i];
cont=1;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(l=j;l<=n;l++)
{
s[cont]=x[i]+x[j]+x[l];
s1[cont]=x[i];
s2[cont]=x[j];
s3[cont]=x[l];
cont++;
}
cont--;
ok=cont;
qsort(1,ok);
ok=0;
for(i=1;i<=cont;i++)
if(y=calcul(1,cont,m-s[i]))
{
g<<s1[i]<<" "<<s2[i]<<" "<<s3[i]<<" "<<s1[y]<<" "<<s2[y]<<" "<<s3[y];
ok=1;
break;
}
if(ok==0)
g<<"-1";
f.close();
g.close();
return 0;
}