Cod sursa(job #1733676)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 25 iulie 2016 12:35:24
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.74 kb
#include <fstream>
#include <cstdio>
using namespace std;
ifstream fin("multimi2.in");
long long n,i,s,ct,p;
bool v[1000005];
int main()
{freopen("multimi2.out","w",stdout);
 fin>>n;
 p=n*(n+1)/2;
 if(n==2)printf("1\n1\n2\n1\n1");
 else if(n==3)printf("0\n2\n1 2\n1\n3");
 else if(p%2==0){printf("0\n");
                 s=0;
                 p=p/2;
                 for(i=n;i>=1;i--)
                    {s=s+i;
                     if(s>p){s=s-i;break;}
                     else {v[i]=1;ct++;}
                    }
                 if(s!=p)ct++;
                 printf("%d\n",ct);
                 for(i=n;i>=1;i--)
                    {if(v[i]==1)printf("%d ",i);
                     else break;
                    }
                  if(s!=p){printf("%d ",p-s);}
                 printf("\n%d\n",n-ct);
                 for(i=1;i<=n;i++)
                    {if(v[i]==0&&i!=p-s)printf("%d ",i);
                     else if(i==p-s)continue;
                     else break;
                    }
                }
 else {printf("1\n");
                 s=0;p=p/2;
                 for(i=n;i>=1;i--)
                    {s=s+i;
                     if(s>(p)+1){s=s-i;break;}
                     else {v[i]=1;ct++;}
                    }
                 if(s!=p+1){ct++;}
                 printf("%d ",ct);
                 for(i=n;i>=1;i--)
                    if(v[i]==1)printf("%d ",i);
                    else break;
                 if(s!=p){printf("%d ",p+1-s);}
                 printf("\n%d\n",n-ct);
                 for(i=1;i<=n;i++)
                    {if(v[i]==0&&i!=p+1-s)printf("%d ",i);
                     else if(i==p+1-s)continue;
                     else break;
                    }

      }
}