Cod sursa(job #2013104)
Utilizator | Data | 20 august 2017 15:20:15 | |
---|---|---|---|
Problema | Multimi2 | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.13 kb |
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("multimi2.in");
ofstream fout("multimi2.out");
int n, i, nr1, nr2, ok, st, dr;
int a[1000004], b[1000004];
int main(){
fin>>n;
if(n==2)
fout<<"1\n1\n1\n1\n2";
else
if(n==3)
fout<<"0\n2\n1 2\n1\n3";
else
{
if(n%4==0)
{
fout<<"0\n";
ok=0;st=1;dr=n;
for(i=1;i<=n/2;i++)
{
if(ok==0)
{
a[++nr1]=st;
a[++nr1]=dr;
}
else
{
b[++nr2]=st;
b[++nr2]=dr;
}
st++;
dr--;
ok=1-ok;
}
}
if(n%4==1)
{
fout<<"1\n";
ok=0;st=2;dr=n;
a[++nr1]=1;
for(i=1;i<=n/2;i++)
{
if(ok==0)
{
a[++nr1]=st;
a[++nr1]=dr;
}
else
{
b[++nr2]=st;
b[++nr2]=dr;
}
st++;
dr--;
ok=1-ok;
}
}
if(n%4==2)
{
fout<<"1\n";
ok=0;st=1;dr=n;
for(i=1;i<=n/2-1;i++)
{
if(ok==0)
{
a[++nr1]=st;
a[++nr1]=dr;
}
else
{
b[++nr2]=st;
b[++nr2]=dr;
}
st++;
dr--;
ok=1-ok;
}
a[++nr1]=st;
b[++nr2]=dr;
}
if(n%4==3)
{
fout<<"2\n";
ok=0;st=2;dr=n;
a[++nr1]=1;
for(i=1;i<=n/2-1;i++)
{
if(ok==0)
{
a[++nr1]=st;
a[++nr1]=dr;
}
else
{
b[++nr2]=st;
b[++nr2]=dr;
}
st++;
dr--;
ok=1-ok;
}
a[++nr1]=st;
b[++nr2]=dr;
}
sort(a+1, a+nr1+1);
sort(b+1, b+nr2+1);
fout<<nr1<<"\n";
for(i=1;i<=nr1;i++)
fout<<a[i]<<" ";
fout<<"\n";
fout<<nr2<<"\n";
for(i=1;i<=nr2;i++)
fout<<b[i]<<" ";
}
fin.close();
fout.close();
return 0;
}