Cod sursa(job #2013413)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 21 august 2017 13:31:19
Problema Multimi2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.64 kb
#include <fstream>
#include <algorithm>
using namespace std;
int n,x,i,j,k,k2,nr,sum,v[1000001],w[1000001];
ifstream fin ("multimi2.in");
ofstream fout ("multimi2.out");

int main (){

    fin>>n;
    if (n%2 == 0){
        if (n%4 == 0){
            fout<<0<<"\n"<<n/2<<"\n";
            x = n/4;
            i = 1;
            j = n;
            k = 0;
            while (x != 0){
                v[++k] = i;
                v[++k] = j;
                i++;
                j--;
                x--;
            }
            x = n/4;
            k2 = 0;
            while (x != 0){
                w[++k2] = i;
                w[++k2] = j;
                i++;
                j--;
                x--;
            }
            sort (v+1,v+k+1);
            sort (w+1,w+k2+1);
            for (i=1;i<=k;i++)
                fout<<v[i]<<" ";
            fout<<"\n"<<k2<<"\n";
            for (i=1;i<=k2;i++)
                fout<<w[i]<<" ";
        }
        else{
            x = (n*(n+1)/2)/2;
            k = 0;
            sum = 0;
            for (i=n;i>=1;i--){
                if (sum + i < x){
                    sum += i;
                    v[++k] = i;
                }
                else{
                    v[++k] = x-sum;
                    nr = x-sum;
                    break;
                }
            }
            k2 = 0;
            for (;i>=1;i--)
                if (i != nr)
                    w[++k2] = i;

            if ( (n*(n+1)/2) %2 == 0)
                fout<<0<<"\n";
            else
                fout<<1<<"\n";
            fout<<k<<"\n";
            sort (v+1,v+k+1);
            for (i=1;i<=k;i++)
                fout<<v[i]<<" ";
            fout<<"\n"<<k2<<"\n";
            sort (w+1,w+k2+1);
            for (i=1;i<=k2;i++)
                fout<<w[i]<<" ";
        }
    }
    else{
        x = n*(n+1)/2;
        if (x % 2 == 0)
            fout<<0<<"\n";
        else
            fout<<1<<"\n";
        x /= 2;
        k = 0;
        sum = 0;
        for (i=n;i>=1;i--){
            if (sum + i < x){
                sum += i;
                v[++k] = i;
            }
            else{
                v[++k] = x-sum;
                nr = x-sum;
                break;
            }
        }
        k2 = 0;
        for (;i>=1;i--)
            if (i != nr)
                w[++k2] = i;
        sort (v+1,v+k+1);
        sort (w+1,w+k2+1);
        fout<<k<<"\n";
        for (i=1;i<=k;i++)
            fout<<v[i]<<" ";
        fout<<"\n"<<k2<<"\n";
        for (i=1;i<=k2;i++)
            fout<<w[i]<<" ";

    }


    return 0;
}