Pagini recente » Cod sursa (job #2969978) | Cod sursa (job #1158464) | Cod sursa (job #3266661) | Cod sursa (job #120401) | Cod sursa (job #575551)
Cod sursa(job #575551)
#include<fstream>
#include<algorithm>
#define MAx 1000001
using namespace std;
int n;
//int v[MAx];
int a[MAx], b[MAx];
int La, Lb, diferenta;
ifstream fin("multimi2.in");
ofstream fout("multimi2.out");
void afis()
{
fout << diferenta << "\n";
sort(a+1, a+La+1);
sort(b+1, b+Lb+1);
fout << La << "\n";
for(int i=1; i<=La; i++) fout << a[i] << " ";
fout << "\n" << Lb << "\n";
for(int i=1; i<=Lb; i++) fout << b[i] << " ";
fout << "\n";
}
void solve_0()
{
if(n%4 == 0)
{
diferenta = 0;
for(int i=1; i<=n/2; i+=2)
a[++La] = i, a[++La] = n-i+1;
for(int i=2; i<=n/2; i+=2)
b[++Lb] = i, b[++Lb] = n-i+1;
}
}
void solve_1()
{
if(n%4 == 1)
{
diferenta = 1;
int k = n/4;
int ok_A, ok_B, caut;
for(int i=1; i<2*k; i+=2)
{
a[++La] = i;
a[++La] = n-i+1;
if( i == k ) ok_A = 1, caut = i;
}
for(int i=2; i<=2*k; i+=2)
{
b[++Lb] = i;
b[++Lb] = n-i+1;
if( i == k ) ok_B = 1, caut = i;
}
if(ok_A) b[++Lb] = a[caut], a[caut] = 2*k+1;
}
}
int main()
{
fin >> n;
solve_0();
solve_1();
//solve_2();
//solve_3();
afis();
return 0;
}