#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<list>
#define mem(x,y)memset(x,y,sizeof(x))
#define max(a,b)(a)>(b)?(a):(b)
#define min(a,b)(a)<(b)?(a):(b)
#define INF 0x1f1f1f1f
#define M 10000007
#define eps 1e-10
using namespace std;
typedef long long int LL;
const int maxn= 5005;
int n;
struct qxw
{
int x,y;
};
qxw a[maxn][maxn];
void fangji(int sx,int sy,int e,int nn,int p)
{
int i,j;
int xx=sx,yy=sy;
for(i=1; i<=nn; i++)
{
if(i<e)
{
a[p][i].x=xx;
a[p][i].y=yy;
xx++;
}
else if(i==e)
{
a[p][i].x=xx;
a[p][i].y=yy;
yy++;
}
else
{
a[p][i].x=xx;
a[p][i].y=yy;
yy++;
}
}
}
void hengfangou(int sx,int sy,int e,int nn,int p)
{
int i,j;
int xx=sx,yy=sy;
for(i=1; i<=nn; i++)
{
if(i<e)
{
a[p][i].x=xx;
a[p][i].y=yy;
yy--;
}
else if(i==e)
{
a[p][i].x=xx;
a[p][i].y=yy;
xx++;
}
else
{
a[p][i].x=xx;
a[p][i].y=yy;
yy++;
}
}
}
void shufangou(int sx,int sy,int e,int nn,int p)
{
int i,j;
int xx=sx,yy=sy;
for(i=1; i<=nn; i++)
{
if(i<e)
{
a[p][i].x=xx;
a[p][i].y=yy;
xx--;
}
else if(i==e)
{
a[p][i].x=xx;
a[p][i].y=yy;
yy++;
}
else
{
a[p][i].x=xx;
a[p][i].y=yy;
xx++;
}
}
}
int main()
{
int i,j,k,l;
while(~scanf("%d",&n))
{
int h,w;
int num=((n+1)*n)/2;
if(n==1)
{
printf("1 1\n");
printf("1 1\n");
continue;
}
if(n==2)
{
printf("1 3\n");
printf("1 1\n");
printf("1 2 1 3\n");
continue;
}
if(n==3)
{
printf("2 3\n");
printf("1 2\n");
printf("1 3 2 3\n");
printf("1 1 2 1 2 2\n");
continue;
}
if(n%2==0)
{
h=(n-1)/2+1;
w=num/h;
printf("%d %d\n",h,w);
int s1=1;
for(i=n-1; i>=1; i-=2)
{
fangji(1,s1,i/2+1,i,i);
s1++;
}
int s2=h;
for(i=n; i>=4; i-=4)
{
shufangou(h,s2+1,i/2,i,i);
s2+=2;
}
int s3=1;
for(i=n-2; i>=4; i-=4)
{
hengfangou(s3,w,i/2,i,i);
s3+=2;
}
if((n/2)%2==0)
{
a[2][1].x=h-1,a[2][1].y=w;
a[2][2].x=h,a[2][2].y=w;
}
else
{
a[2][1].x=h,a[2][1].y=w-1;
a[2][2].x=h,a[2][2].y=w;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d %d%c",a[i][j].x,a[i][j].y,j==i?'\n':' ');
}
}
}
else
{
h=n/2+1;
w=num/h;
printf("%d %d\n",h,w);
int s1=1;
for(i=n; i>=1; i-=2)
{
fangji(1,s1,i/2+1,i,i);
s1++;
}
int s3=1;
for(i=n-1; i>=4; i-=4)
{
hengfangou(s3,w,i/2,i,i);
s3+=2;
}
int s2=h;
for(i=n-3; i>=4; i-=4)
{
shufangou(h,s2+1,i/2,i,i);
s2+=2;
}
if(((n-1)/2)%2==0)
{
a[2][1].x=h,a[2][1].y=w-1;
a[2][2].x=h,a[2][2].y=w;
}
else
{
a[2][1].x=h-1,a[2][1].y=w;
a[2][2].x=h,a[2][2].y=w;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d %d%c",a[i][j].x,a[i][j].y,j==i?'\n':' ');
}
}
}
}
return 0;
}
HihoCoder 1257(2015 Asia Beijing Regional Contest)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.