Pagini recente » Cod sursa (job #2361744) | Cod sursa (job #1528530) | Cod sursa (job #1554503) | Cod sursa (job #1321328) | Cod sursa (job #1067935)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n, s, nr[101], sum[1000001], i, j, k, l, m, p, st, dr, sc, mij, ok, c1, c2, c3, v[15], v2[15];
char poz[1000001][15];
int main()
{
f>>n>>s;
for (i=1; i<=n; i++)
f>>nr[i];
sort(nr + 1, nr + n + 1);
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
for (k=1; k<=n; k++)
{
sum[++l]=nr[i] + nr[j] + nr[k];
m=0;
c1=i;
c2=j;
c3=k;
while (c1!=0)
{
poz[l][++m]=char(c1%10 + '0');
c1/=10;
}
poz[l][++m]=' ';
while (c2!=0)
{
poz[l][++m]=char(c2%10 + '0');
c2/=10;
}
poz[l][++m]=' ';
while (c3!=0)
{
poz[l][++m]=char(c3%10 + '0');
c3/=10;
}
poz[l][++m]=' ';
}
sort(sum + 1, sum + l);
for (i=1; i<=l && ok==0; i++)
{
dr=l;
st=1;
sc=s-sum[i];
while(st<=dr && ok==0)
{
mij = (st+dr)/2;
if (sum[mij] == sc)
ok=1;
else if (sum[mij] < sc)
st = mij + 1;
else
dr = mij - 1;
}
}
i--;
if (ok==1)
{
m=0;
c1=0;
int x=1;
while (poz[i][++m] != 0)
{
if (poz[i][m] <= '9' && poz[i][m] >= '0')
{
c1 = (poz[i][m] - '0') * x + c1;
x*=10;
}
if (poz[i][m] == ' ')
{
v[++p]=c1;
c1=0;
x=1;
}
}
m=0;
c1=0;
x=1;
while (poz[mij][++m] != 0)
{
if (poz[mij][m] <= '9' && poz[mij][m] >= '0')
{
c1 = (poz[mij][m] - '0') * x + c1;
x*=10;
}
if (poz[mij][m] == ' ')
{
v[++p]=c1;
c1=0;
x=1;
}
}
l=0;
for (m=1; m<=12; m++)
v2[m]=nr[v[m]];
sort(v2 + 1, v2 + 6 + 1);
for (m=1; m<=6; m++)
g<<v2[m]<<" ";
}
else
{
g<<-1;
}
return 0;
}