Cod sursa(job #2569550)

Utilizator RaresFelixTudose Rares Felix RaresFelix Data 4 martie 2020 12:33:46
Problema Ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <fstream>
#include <algorithm>

using namespace std;
typedef long long  ll;
ifstream fi("multimi2.in");
ofstream fo("multimi2.out");
ll s1,s2;
ll bt(ll n)
{
    if(n%4==0)
        return 0;
    if(n%2==1 && n>5)
    {
        if((n-3)%4==0)
            return 0;
        return 1;
    }
    if(n%2==0)///nu e div cu 4
        return 1;
    if(n==3)
        return 0;
    if(n==1)
        return 1;
    if(n==5)
        return 1;
}
ll n;
int main()
{
    fi>>n;
    fo<<bt(n)<<"\n";
    if(n%4==0)
    {
        fo<<n/2<<"\n";
        for(int i=1;i<=n/4;i++)
        /// 1...n/4
            fo<<i<<" ";
        for(int i=3*n/4+1;i<=n;i++)
        /// 3*n/4+1 , ...n
            fo<<i<<" ";
        fo<<"\n"<<n/2<<"\n";
        ///1*n/4....3*n/4
        for(int i=n/4+1;i<=3*n/4;i++)
            fo<<i<<" ";
    }
    if(n%2==1)
        if((n-3)%4==0)
        {
            fo<<2+(n-3)/2<<"\n"<<"1 2 ";
            for(int i=4;i<=n;i+=2)
                fo<<i+((i%4)/2)<<" ";
            fo<<"\n"<<1+(n-3)/2<<"\n3 ";
            for(int i=4;i<=n;i+=2)
                fo<<i+1-(i%4)/2<<" ";
        }
        else
        {
            fo<<2+(n-3)/2<<"\n"<<"1 2 ";
            for(int i=4;i<=n;i+=2)
                fo<<i+((i%4)/2)<<" ";
            fo<<"\n"<<1+(n-3)/2<<"\n3 ";
            for(int i=4;i<=n;i+=2)
                fo<<i+1-(i%4)/2<<" ";
        }
    if(n%2==0 && n%4!=0)
    {
        fo<<n/2<<"\n";
        for(int i=1;i<=n;i+=2)
            fo<<i+((i%4)==3)<<" ";
        fo<<"\n"<<n/2<<"\n";
        for(int i=1;i<=n;i+=2)
            fo<<i+((i%4)==1)<<" ";
    }
    return 0;
}