Cod sursa(job #2013104)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 20 august 2017 15:20:15
Problema Multimi2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.13 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("multimi2.in");
ofstream fout("multimi2.out");
int n, i, nr1, nr2, ok, st, dr;
int a[1000004], b[1000004];

int main(){
    fin>>n;
    if(n==2)
        fout<<"1\n1\n1\n1\n2";
    else
        if(n==3)
            fout<<"0\n2\n1 2\n1\n3";
        else
        {
            if(n%4==0)
            {
                fout<<"0\n";
                ok=0;st=1;dr=n;
                for(i=1;i<=n/2;i++)
                {
                    if(ok==0)
                    {
                        a[++nr1]=st;
                        a[++nr1]=dr;
                    }
                    else
                    {
                        b[++nr2]=st;
                        b[++nr2]=dr;
                    }
                    st++;
                    dr--;
                    ok=1-ok;
                }
            }
            if(n%4==1)
            {
                fout<<"1\n";
                ok=0;st=2;dr=n;
                a[++nr1]=1;
                for(i=1;i<=n/2;i++)
                {
                    if(ok==0)
                    {
                        a[++nr1]=st;
                        a[++nr1]=dr;
                    }
                    else
                    {
                        b[++nr2]=st;
                        b[++nr2]=dr;
                    }
                    st++;
                    dr--;
                    ok=1-ok;
                }
            }
            if(n%4==2)
            {
                fout<<"1\n";
                ok=0;st=1;dr=n;
                for(i=1;i<=n/2-1;i++)
                {
                    if(ok==0)
                    {
                        a[++nr1]=st;
                        a[++nr1]=dr;
                    }
                    else
                    {
                        b[++nr2]=st;
                        b[++nr2]=dr;
                    }
                    st++;
                    dr--;
                    ok=1-ok;
                }
                a[++nr1]=st;
                b[++nr2]=dr;
            }
            if(n%4==3)
            {
                fout<<"2\n";
                ok=0;st=2;dr=n;
                a[++nr1]=1;
                for(i=1;i<=n/2-1;i++)
                {
                    if(ok==0)
                    {
                        a[++nr1]=st;
                        a[++nr1]=dr;
                    }
                    else
                    {
                        b[++nr2]=st;
                        b[++nr2]=dr;
                    }
                    st++;
                    dr--;
                    ok=1-ok;
                }
                a[++nr1]=st;
                b[++nr2]=dr;
            }
            sort(a+1, a+nr1+1);
            sort(b+1, b+nr2+1);
            fout<<nr1<<"\n";
            for(i=1;i<=nr1;i++)
                fout<<a[i]<<" ";
            fout<<"\n";
            fout<<nr2<<"\n";
            for(i=1;i<=nr2;i++)
                fout<<b[i]<<" ";
        }
    fin.close();
    fout.close();
    return 0;
}