Cod sursa(job #401079)
Utilizator | Data | 22 februarie 2010 13:17:32 | |
---|---|---|---|
Problema | Multimi2 | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.79 kb |
#include<iostream>
#include<string>
using namespace std;
int N;
char colour[1000005];
int main()
{
int is,id,NR1,NR2,ans;
freopen("multimi2.in","r",stdin);
freopen("multimi2.out","w",stdout);
scanf("%d",&N);
if(N%4==0)
{
NR1=NR2=N/2;
is=1,id=N;
while(is<id)
{
colour[is]=0;
colour[id]=0;
is+=2;
id-=2;
}
is=2,id=N-1;
while(is<id)
{
colour[is]=1;
colour[id]=1;
is+=2;
id-=2;
}
ans=0;
}
else
if(N%4==3)
{
NR1=N/2+1;
NR2=N/2;
is=1,id=N-1;
while(is<id)
{
colour[is]=0;
colour[id]=0;
is+=2;
id-=2;
}
is=2,id=N-2;
while(is<id)
{
colour[is]=1;
colour[id]=1;
is+=2;
id-=2;
}
colour[N]=1;
ans=0;
}
else
if(N%4==1)
{
NR1=N/2+1;
NR2=N/2;
is=1,id=N-1;
while(is<id)
{
colour[is]=0;
colour[id]=0;
is+=2;
id-=2;
}
is=2,id=N-2;
while(is<id)
{
colour[is]=1;
colour[id]=1;
is+=2;
id-=2;
}
colour[N/2]=0;
colour[N]=1;
ans=1;
}
else
{
NR1=N/2;
NR2=N/2;
is=1,id=N;
while(is<id-1)
{
colour[is]=0;
colour[id]=0;
is+=2;
id-=2;
}
is=2,id=N-1;
while(is<id)
{
colour[is]=1;
colour[id]=1;
is+=2;
id-=2;
}
colour[N/2]=0;
colour[N/2+1]=1;
ans=1;
}
printf("%d\n",ans);
printf("%d\n",NR1);
for(int i=1;i<=N;++i)
if(!colour[i]) printf("%d ",i);
printf("\n");
printf("%d\n",NR2);
for(int i=1;i<=N;++i)
if(colour[i]) printf("%d ",i);
return 0;
}