Pagini recente » Cod sursa (job #874524) | Cod sursa (job #758118) | Cod sursa (job #2875393) | Cod sursa (job #1747364) | Cod sursa (job #2931598)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("Loto.in");
ofstream out("Loto.out");
int sum[105], n, s, nr[105];
int cnt = 1;
int caut_bin(int suma)
{
int st = 1, dr = (n * n) * n;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (s - sum[mij] == suma)
{
return sum[mij];
}
else
{
if (s - sum[mij] < suma)
{
st = mij + 1;
}
else
{
dr = mij - 1;
}
}
}
return 0;
}
void solutie(int sum1)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= n; k++)
{
if (i + j + k == sum1)
{
out << i << " " << j << " " << k;
return;
}
}
}
}
}
int main()
{
in >> n >> s;
for (int i = 1; i <= n; i++)
{
in >> nr[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= n; k++)
{
sum[cnt] = i + j + k;
cnt++;
}
}
}
sort(sum + 1, sum + cnt + 1);
int sol1, sol2 = 0;
for (int i = 1; i <= (n * n) * n; i++)
{
if (caut_bin(sum[i]) != 0)
{
sol1 = sum[i];
sol2 = caut_bin(sum[i]);
}
}
if (sol2 != 0)
{
solutie(sol1);
out << " ";
solutie(sol2);
}
else
{
out << -1;
}
return 0;
}