Pagini recente » Cod sursa (job #2913125) | Cod sursa (job #602161) | Cod sursa (job #2398156) | Cod sursa (job #737562) | Cod sursa (job #1069132)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
struct secv
{
int sum;
int e1;
int e2;
int e3;
}secvente[100001];
bool compara(secv s1, secv s2)
{
return s1.sum < s2.sum;
}
int n, s, nr[101], i, j, k, l, m, p, st, dr, sc, mij, ok, c1, c2, c3, v[10];
int main()
{
f>>n>>s;
for (i=1; i<=n; i++)
f>>nr[i];
for (i=1; i<=n; i++)
for (j=i; j<=n; j++)
for (k=j; k<=n; k++)
{
secvente[++l].sum=nr[i]+nr[j]+nr[k];
secvente[l].e1=nr[i];
secvente[l].e2=nr[j];
secvente[l].e3=nr[k];
}
sort(secvente + 1, secvente + l+1, compara);
for (i=1; i<=l && ok==0; i++)
{
dr=l;
st=1;
sc=s-secvente[i].sum;
while(st<=dr && ok==0)
{
mij = (st+dr)/2;
if (secvente[mij].sum == sc)
ok=1;
else if (secvente[mij].sum < sc)
st = mij + 1;
else
dr = mij - 1;
}
}
i--;
if (ok==1)
{
v[1]=secvente[i].e1;
v[2]=secvente[i].e2;
v[3]=secvente[i].e3;
v[4]=secvente[mij].e1;
v[5]=secvente[mij].e2;
v[6]=secvente[mij].e3;
for (i=1; i<=6; i++)
g<<v[i]<<' ';
}
else
{
g<<-1;
}
return 0;
}