您的位置:首页 > 其它

codeforces 390D Inna and Sweet Matrix

2014-02-23 13:57 393 查看
几个小结论:

1.路径长度=i+j-1;

2.最简单的走法是先横走再竖着走或者先竖着走再横着走

#include<cstdio>
#include<cstring>
using namespace std;

void print(int x,int y)
{
for(int i=1; i<=y; i++)
printf("(1,%d) ",i);
for(int i=2; i<=x; i++)
printf("(%d,%d) ",i,y);
printf("\n");
}

int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
int cnt=0;
int ans=0;
int l,i;
for(l=2;; l++)
{
for(i=1; i<=n&&i<l; i++)
{
if(l-i>m)continue;
ans+=l-1;
cnt++;
if(cnt>=k)break;
}
if(cnt>=k)break;
}
printf("%d\n",ans);
//    printf("%d %d\n",l,i);
for(; i>=1; i--)
{
if(l-i>m)break;
print(i,l-i);
}
l--;
for(; l>=2; l--)
for(i=1; i<l&&i<=n; i++)
{
if(l-i>m)continue;
print(i,l-i);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: