Cod sursa(job #109775)

Utilizator raduzerRadu Zernoveanu raduzer Data 25 noiembrie 2007 12:40:50
Problema Multimi2 Scor 40
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 1.06 kb
#include <stdio.h>

int a[1000010],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=n*(n+1)/2;
    printf("%d\n",s%2);
    s=s/2;
    proc(0);
    return 0;
}