Pagini recente » Cod sursa (job #2082991) | Cod sursa (job #1624991) | Cod sursa (job #1534139) | Cod sursa (job #2694513) | Cod sursa (job #138705)
Cod sursa(job #138705)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespaces std;
long s[1000000];
/*void qsort(int l, int r)
{
int aux, i, j, loc;
i = l; j = r; loc = l;
while (i < j)
{
while ((s[j] >= s[loc]) && (j != loc))
j--;
if (j > loc)
{
aux = s[j];
s[j] = s[loc];
s[loc] = aux;
loc = j;
}
while ((s[i] <= s[loc]) && (i != loc))
i++;
if (i < loc)
{
aux = s[i];
s[i] = s[loc];
s[loc] = aux;
loc = i;
}
}
if (l<loc-1)
qsort(l, loc-1);
if (loc+1<r)
qsort(loc+1, r);
} */
int main()
{
FILE *f, *g;
long p, suma, saux, pp, ii, jj, kk, poz, l, r, m, i, j, k, nr, n, a[100];
f = fopen("loto.in", "r");
g = fopen("loto.out", "w");
fscanf(f, "%ld %ld", &n, &suma);
for (i = 1; i <= n; ++i)
fscanf(f, "%ld", &a[i]);
nr = 1;
for (i=1; i <= n; ++i)
for (j=i; j <= n; ++j)
for (k=j; k <= n; ++k)
s[nr++] = a[i] + a[j] + a[k];
nr--;
sort(s, s+nr);
for (pp=1; pp < nr; pp<<=1);
for (i=1; i <= n; ++i)
for (j=i; j <= n; ++j)
for (k=j; k <= n; ++k)
{
saux = suma - a[i] - a[j] - a[k];
//l = 1;
//r = nr-1;
// while (l <= r)
// {
// m = (l+r) / 2;
// if (saux == s[m])
// {
p = pp;
for (poz=0; p; p>>=1)
if ( poz+p < nr && s[poz+p] <= saux)
poz += p;
if (s[poz]==saux)
{
for (ii=1; ii <= n; ++ii)
for (jj=ii; jj <= n; ++jj)
for (kk=jj; kk <= n; ++kk)
if (a[ii]+a[jj]+a[kk]==saux)
{
fprintf(g, "%ld %ld %ld %ld %ld %ld", a[i], a[j], a[k], a[ii], a[jj], a[kk]);
exit(0);
}
}
// }
// else
// if (saux < s[m])
// r = m-1;
// else
// l = m+1;
}
fprintf(g, "-1");
fclose(f);
fclose(g);
return 0;
}