Pagini recente » Cod sursa (job #685113) | Cod sursa (job #3154916) | Cod sursa (job #270276) | Cod sursa (job #422188) | Cod sursa (job #1164663)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("multimi2.in");
ofstream fout("multimi2.out");
int v1[500001], v2[500001], i, n, x, y;
void afisare();
int main() {
fin >> n;
if(n == 3) {
fout << "0\n2\n1 2\n1\n3\n";
fin.close();
fout.close();
return 0;
}
if(n % 2 == 0 && (n / 2) % 2 == 0) {
for(i = 1;i <= n / 2;i += 2) {
v1[++v1[0]] = i;
v1[++v1[0]] = n - i + 1;
v2[++v2[0]] = i + 1;
v2[++v2[0]] = n - i;
}
fout << "0\n";
afisare();
fin.close();
fout.close();
return 0;
}
if(n % 2 == 0 && (n / 2) % 2 == 1) {
for(i = 1;i <= n / 2 - 1;i += 2) {
v1[++v1[0]] = i;
v1[++v1[0]] = n - i + 1;
v2[++v2[0]] = i + 1;
v2[++v2[0]] = n - i;
}
v1[++v1[0]] = i;
v2[++v2[0]] = i + 1;
fout << "1\n";
afisare();
fin.close();
fout.close();
return 0;
}
if(n % 2 == 1 && ((n - 3) / 2) % 2 == 0) {
v1[++v1[0]] = 1;
v1[++v1[0]] = 2;
v2[++v2[0]] = 3;
x = 4;
y = n;
fout << "0\n";
while(x < y) {
v1[++v1[0]] = x;
v1[++v1[0]] = y;
v2[++v2[0]] = x + 1;
v2[++v2[0]] = y - 1;
x += 2;
y -= 2;
}
afisare();
fin.close();
fout.close();
return 0;
}
if(n % 2 == 1 && ((n - 3) / 2)% 2 == 1) {
v1[++v1[0]] = 1;
v1[++v1[0]] = 2;
v2[++v2[0]] = 3;
x = 4;
y = n;
fout << "1\n";
while(y - x > 1) {
v1[++v1[0]] = x;
v1[++v1[0]] = y;
v2[++v2[0]] = x + 1;
v2[++v2[0]] = y - 1;
x += 2;
y -= 2;
}
v1[++v1[0]] = x;
v2[++v2[0]] = y;
afisare();
fin.close();
fout.close();
return 0;
}
}
void afisare() {
sort(v1 + 1, v1 + 1 + v1[0]);
sort(v2 + 1, v2 + 1 + v2[0]);
fout << v1[0] << '\n';
for(i = 1;i <= v1[0];i++) {
fout << v1[i] << ' ';
}
fout << '\n';
fout << v2[0] << '\n';
for(i = 1;i <= v2[0];i++) {
fout << v2[i] << ' ';
}
fout << '\n';
}