Cod sursa(job #110863)

Utilizator raduzerRadu Zernoveanu raduzer Data 27 noiembrie 2007 21:26:14
Problema Multimi2 Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>

int a[1001000],n,q,t,nr1;
long long s,sp;

void proc(int x)
{
     if (t==1) return;
     sp+=x;
     if (sp==s)
     {
          t=1;
          nr1=0;
          for (int i=1; i<=n; ++i)
              if (a[i]==1) ++nr1;
          printf("%d\n",nr1);
          for (int i=1; i<=n; ++i) if (a[i]==1) printf("%d ",i);
          printf("\n");
          printf("%d\n",n-nr1);
          for (int i=1; i<=n; ++i) if (a[i]==0) printf("%d ",i);
          return;
     }
     if (s-sp<=x)
     {
         // if (sp+n<s) q=1;
          sp-=x;
          return;
     }
     for (int i=x+1; i<=n; ++i)
     {
         if (sp+i>s) return;
         a[i]=1;
         proc(i);
         if(t==1) return;
         if (q=1) 
         //{
         //     q=0;
         //     return;
         //}
         a[i]=0;
     }
     sp-=x;
}

int main()
{
    freopen("multimi2.in","r",stdin);
    freopen("multimi2.out","w",stdout);
    scanf("%d",&n);
    s=(long long)n*(n+1)/2;
    printf("%d\n",s%2);
    s=s/2;
    proc(0);
    return 0;
}