Pagini recente » Istoria paginii runda/minue5/clasament | Diferente pentru registru-diplome intre reviziile 16 si 15 | Profil candy_anna00 | Monitorul de evaluare | Cod sursa (job #1997486)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct suma
{
int s, a, b, c;
};
suma sum[1000001];
int x[101], sol[7];
int i, j, k, sx, n, aux, st, dr, m, nr;
bool cmp(suma x, suma y)
{
return x.s<y.s;
}
int main()
{
fin>>n>>sx;
for(i=1; i<=n; ++i) fin>>x[i];
for(i=1; i<=n; ++i)
{
for(j=1; j<=n; ++j)
{
for(k=1; k<=n; ++k)
{
sum[++nr].s=x[i]+x[j]+x[k];
sum[nr].a=x[i];
sum[nr].b=x[j];
sum[nr].c=x[k];
}
}
}
sort(sum+1, sum+nr+1, cmp);
for(i=1; i<=n; ++i)
{
for(j=1; j<=n; ++j)
{
for(k=1;k<=n; ++k)
{
st=1; dr=nr;
aux=sx-x[i]-x[j]-x[k];
while(st<=dr)
{
m=(st+dr)/2;
if(sum[m].s<aux) st=m+1;
else if(sum[m].s>aux) dr=m-1;
else
{
sol[1]=sum[m].a;
sol[2]=sum[m].b;
sol[3]=sum[m].c;
sol[4]=x[i];
sol[5]=x[j];
sol[6]=x[k];
for(i=1; i<=6; ++i) fout<<sol[i]<<" ";
return 0;
}
}
}
}
}
fout<<"-1"<<"\n";
return 0;
}