Pagini recente » Cod sursa (job #903122) | Cod sursa (job #684458) | Cod sursa (job #2780316) | Cod sursa (job #608686) | Cod sursa (job #109369)
Cod sursa(job #109369)
#include <stdio.h>
#include <math.h>
unsigned long n, k;
int bs (int st, int dr, unsigned long v [], unsigned long r)
{
unsigned long m;
if (st <= dr)
{
m=(st+dr)/2;
if (v [m] == r)
return m;
if (v [m] > r)
return bs (m+1, dr, v, r);
return bs (st, m-1, v, r);
}
else
return 0;
}
int main ()
{
freopen ("multimi2.in", "r", stdin);
freopen ("multimi2.out", "w", stdout);
int num=0;
unsigned long m, i, o, v [10001];
scanf ("%lu", &n);
k=n*(n+1)/4;
m=(long double)n*(n+1)/2-k;
if (m > k)
printf ("%lu\n", (unsigned long)(m-k));
else
printf ("%lu\n", (unsigned long)(k-m));
o=n;
while (k)
{
if (k >= o)
{
k=k-o;
v [++num]=o;
o--;
}
else
{
v [++num]=k;
k=0;
}
}
printf ("%d\n", num);
for (i=num; i > 0; i--)
printf ("%lu ", v [i]);
printf ("\n%d\n", n-num);
for (i=1; i<=n; i++)
{
if (bs (1, num, v, i) == 0)
printf ("%lu ", i);
}
fcloseall ();
return 0;
}