Cod sursa(job #2544011)

Utilizator memecoinMeme Coin memecoin Data 11 februarie 2020 18:18:50
Problema Multimi2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <string.h>
#include <queue>
#include <stack>

#define INF 0x3f3f3f3f

using namespace std;

#ifdef DEBUG
string name = "data";
#else
string name = "multimi2";
#endif

ifstream fin(name + ".in");
ofstream fout(name + ".out");

int64_t n;

int main() {
    
    fin >> n;
    
    int64_t s = n * (n + 1) / 2;
    int ss = (s % 2) == 1;
    s /= 2;
    
    int64_t s2 = 0;
    
    vector<int> sol;
    
    int last = 0;
    
    for (int i = 1; i <= n; ++i) {
        s2 += i;
        last = i;
        sol.push_back(i);
        if (s2 >= s) {
            break;
        }
    }
    
    int toIgnore = 0;
    int64_t dif = abs(s - s2);
    
    if (dif > 1) {
        toIgnore = dif;
    }
    
    if (dif == 1 && ss == 0) {
        toIgnore = 1;
    }
    
    fout << ss << "\n";
    
    fout << (sol.size() - (toIgnore != 0)) << "\n";
    
    for (auto x: sol) {
        if (x != toIgnore) {
            fout << x << " ";
        }
    }
    
    fout << "\n";
    
    fout << (n - last + (toIgnore != 0)) << "\n";
    
    if (toIgnore != 0) {
        fout << toIgnore << " ";
    }
    
    for (int i = last + 1; i <= n; ++i) {
        fout << i << " ";
    }
    
    return 0;
}