Codeforces Round #421 (Div. 1), problem: (E) Mister B and Flight to the Moon Solution In C/C++

#include<cstdlib>
#include<cstdio>
#include<algorithm>

using namespace std;

const int N=301;
const int M=100001;
const int K=4;

int a[M][K];
int f[N];
int n,m,i,j,k,x,y,t,u,v;

void make(int &k,int w,int x,int y,int z){
k++;
a[k][0]=w;
a[k][1]=x;
a[k][2]=y;
a[k][3]=z;
}

int main(){
scanf(“%d”,&n);
if(n&1){
f[2]=f[3]=1;
}else{
f[1]=3;
f[2]=4;
f[3]=1;
f[4]=2;
}
for(i=5^(n&1);i<n;i+=2){
x=i;
y=i+1;
if(n&1)f[x]=f[y]=1;
else{
f[x]=1;
f[y]=2;
make(m,y,1,f[1],2);
f[1]=x;
}
for(j=3^(n&1);j<i;j+=2){
u=j;
v=j+1;
make(m,y,u,f[u],v);
f[u]=x;
make(m,x,u,f[v],v);
f[v]=y;
}
}
printf(“%d\n”,m+((n>>1)<<1));
for(i=1+(n&1);i<n;i+=2){
printf(“3 %d %d %d\n”,i,i+1,f[i]);
printf(“3 %d %d %d\n”,i,i+1,f[i+1]);
}
for(i=1;i<=m;i++){
printf(“4 “);
for(j=0;j<=3;j++)printf(“%d “,a[i][j]);
printf(“\n”);
}
return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *