Cod sursa(job #1733673)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 25 iulie 2016 12:29:53
Problema Multimi2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <fstream>
using namespace std;
ifstream fin("multimi2.in");
ofstream fout("multimi2.out");
long long n,i,s,ct,p;
bool v[1000005];
int main()
{fin>>n;
 p=n*(n+1)/2;
 if(n==2)fout<<"1\n1\n2\n1\n1";
 else if(n==3)fout<<"0\n2\n1 2\n1\n3";
 else if(p%2==0){fout<<"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++;
                 fout<<ct<<"\n";
                 for(i=n;i>=1;i--)
                    {if(v[i]==1)fout<<i<<" ";
                     else break;
                    }
                  if(s!=p){fout<<p-s<<" ";}
                 fout<<"\n"<<n-ct<<"\n";
                 for(i=1;i<=n;i++)
                    {if(v[i]==0&&i!=p-s)fout<<i<<" ";
                     else if(i==p-s)continue;
                     else break;
                    }
                }
 else {fout<<"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++;}
                 fout<<ct<<"\n";
                 for(i=n;i>=1;i--)
                    if(v[i]==1)fout<<i<<" ";
                    else break;
                 if(s!=p){fout<<p+1-s<<" ";}
                 fout<<"\n"<<n-ct<<"\n";
                 for(i=1;i<=n;i++)
                    {if(v[i]==0&&i!=p+1-s)fout<<i<<" ";
                     else if(i==p+1-s)continue;
                     else break;
                    }

      }
}