Pagini recente » Cod sursa (job #1942266) | Cod sursa (job #1475458) | Cod sursa (job #395354) | Cod sursa (job #2647123) | Cod sursa (job #575726)
Cod sursa(job #575726)
#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");
int S1, S2;
void Sum()
{
for(int i=1; i<=La; i++) S1 += a[i];
S2 = n*(n+1)/2 - S1;
}
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 precomputare()
{
if(n==2) diferenta = 1, La = 1, Lb = 1, a[1] = 1, b[1] = 1;
else if (n==3) diferenta = 0, La = 2, Lb = 1, a[1] = 1, a[2] = 2, b[1] = 3;
}
void solve_0()
{
if(n%4 == 0)
{
diferenta = 0;
int k=n/4;
for(int i=1; i<=2*k-1; i+=2)
a[++La] = i, a[++La] = n-i+1;
for(int i=2; i<=2*k; i+=2)
b[++Lb] = i, b[++Lb] = n-i+1;
}
}
void solve_1()
{
if(n%4 == 1)
{
diferenta = 1;
int k = n/4;
for(int i=1; i<2*k; i+=2)
{
if(i!=k) a[++La] = i;
a[++La] = n-i+1;
}
for(int i=2; i<=2*k; i+=2)
{
if(i!=k) b[++Lb] = i;
b[++Lb] = n-i+1;
//if( i == k ) ok_B = 1, caut = i;
}
if(k%2)
{
b[++Lb] = k;
a[++La] = 2*k+1;
}
else
{
a[++La] = k;
b[++Lb] = 2*k+1;
}
}
}
void solve_2()
{
if(n%4 == 2)
{
diferenta = 1;
int k = n/4;
for(int i=1; i<2*k; i+=2)
a[++La] = i, a[++La] = n-i+1;
for(int i=2; i<=2*k; i+=2)
b[++Lb] = i, b[++Lb] = n-i+1;
a[++La] = 2*k+1;
b[++Lb] = 2*k+2;
}
}
void solve_3()
{
if(n%4 == 3)
{
diferenta=0;
int k=n/4;
//int /*ok_A, ok_B, /caut*/;
for(int i=1; i<2*k; i+=2)
{
if(i!=k) a[++La] = i;
a[++La] = n-i+1;
}
for(int i=2; i<=2*k; i+=2)
{
if(i!=k) b[++Lb] = i;
b[++Lb] = n-i+1;
}
if(k%2)
{
b[++La] = k;
b[++La] = 2*k+3;
a[++Lb] = 2*k+1;
a[++Lb] = 2*k+2;
}
else
{
a[++La] = k;
a[++La] = 2*k+3;
b[++Lb] = 2*k+1;
b[++Lb] = 2*k+2;
}
}
}
void solve(int p)
{
if (p==0) solve_0();
if (p==1) solve_1();
if (p==2) solve_2();
if (p==3) solve_3();
}
int main()
{
fin >> n;
solve_3();
afis();
return 0;
}