Pagini recente » Cod sursa (job #2601094) | Cod sursa (job #2524122) | Cod sursa (job #2788493) | 11111 | Cod sursa (job #2032663)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct loto
{
int a;
int b;
int c;
int suma;
}bilet[1000010];
int n, s, nr, mid, ls, ld;
int v[110];
bool compara (loto x, loto y)
{
if (x.suma > y.suma)
return 0;
return 1;
}
int main()
{
in >> n >> s;
for (int i = 1; i <= n; i++)
in >> v[i];
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= n; k++)
{
nr++;
bilet[nr].suma = v[i] + v[j] + v[k];
bilet[nr].a = v[i];
bilet[nr].b = v[j];
bilet[nr].c = v[k];
}
}
}
sort (bilet + 1, bilet + nr + 1, compara);
for (int i = 1; i <= nr; i++)
{
ls = i;
ld = nr;
while (ls <= ld)
{
mid = (ls + ld) / 2;
if (bilet[i].suma + bilet[mid].suma == s)
{
out << bilet[i].a << ' ' << bilet[i].b << ' ' << bilet[i].c << ' ' << bilet[mid].a << ' ' << bilet[mid].b << ' ' << bilet[mid].c;
return 0;
}
else
{
if (bilet[i].suma + bilet[mid].suma < s)
ls = mid + 1;
else
ld = mid - 1;
}
}
}
out << -1;
return 0;
}