Cod sursa(job #755431)

Utilizator vendettaSalajan Razvan vendetta Data 5 iunie 2012 19:09:03
Problema Multimi2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <iostream>
#include <fstream>

using namespace std;

#define nmax 1000005

ifstream f("multimi2.in");
ofstream g("multimi2.out");

int n, a[nmax], b[nmax];

void citeste(){

    f >> n;

}

inline int modul(int x){

    if (x < 0) return x*(-1);
    return x;

}

void rezolva(){

    int rez = 0;

    if (n % 2 == 0){
        rez = 1;
        for(int i=1; i<=n;){
            a[++a[0]] = i;
            if (i%2 == 0) i++;
            else i+=3;
            if (i > n) break;
        }
        for(int i=2; i<=n;){
            b[++b[0]] = i;
            if (i%2 == 0) i++;
            else i+=3;
            if (i > n) break;
        }
    }
    else if (n%2 == 1){
        rez = 0;
        a[++a[0]] = 1;
        for(int i=2; i<=n;){
            a[++a[0]] = i;
            if (i%2 == 1) i++;
            else i+=3;
            if (i > n) break;
        }
        for(int i=3; i<=n;){
            b[++b[0]] = i;
            if (i%2 == 1) i++;
            else i+=3;
            if (i > n) break;
        }
    }

    for(int i=1; i<=a[0]; i++) rez += a[i];
    for(int i=1; i<=b[0]; i++) rez -= b[i];

    g << modul(rez) << "\n";
    g << a[0] << "\n";
    for(int i=1; i<=a[0]; i++) g << a[i] << " ";
    g << "\n";
    g << b[0] << "\n";
    for(int i=1; i<=b[0]; i++) g << b[i] << " ";
    g << "\n";
}

int main(){

    citeste();
    rezolva();

    f.close();
    g.close();

    return 0;

}