Cod sursa(job #2011820)

Utilizator maria15Maria Dinca maria15 Data 17 august 2017 12:22:37
Problema Multimi2 Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>

using namespace std;

ifstream fin("multimi2.in");
ofstream fout("multimi2.out");

int n, i, j, s, s1, s2, crt, k, v[1000000], f[1000000];
char ok;

int main(){
    fin>>n;
    s = n*(n+1)/2;
    s1 = n;
    s2 = s-s1;
    k = 1;
    v[1] = n;
    crt = n;
    int dmin = max(s1-s2, s2-s1);
    for(i=crt-1;i>0;i--){
        crt=i;
        while(s1<=s2 && crt>0){
            s1 += crt;
            s2 -=crt;
            k++;
            v[k] = crt;
            crt--;
            ok=0;
            if( max(s1-s2, s2-s1) < dmin){
                dmin = max(s1-s2, s2-s1);
                ok=1;
            }
        }
        if(crt == 0 && s1<=s2)
            if(ok==0)
                k--;

        if(crt!=0 || (crt == 0 && s1>s2)){
            crt++;
            s1 -= crt;
            s2 += crt;
            k--;
        }

    }
    fout<<dmin<<"\n";
    fout<<k<<"\n";
    for(i=k;i>0;i--){
        fout<<v[i]<<" ";
        f[v[i]] = 1;
    }
    fout<<"\n"<<n-k<<"\n";

    for(i=1;i<=n;i++)
        if(f[i] == 0)
            fout<<i<<" ";
    return 0;
}