/*
纯模拟题考虑 三行那个分子为0的时候,那么他的下一列不变。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int n,m;
int map[220][220];
int a[2000];
int am[2000];
int b[2000];
int bm[2000];
int sum;
int fun(int count1,int x)
{ //printf("%d %d ",sum,count1);
for(int i=sum-1;i>=1;i--)
{
map[i][count1]=map[i+1][count1-1];
}
map[sum][count1]=map[1][count1-1];
for(int i=1;i<b[x];i++)
{ int t=map[1][count1];
for(int j=1;j<sum;j++)
{
map[j][count1]=map[j+1][count1];
}
map[sum][count1]=t;
}
}
int fun1(int count1,int x)
{ //printf("%d %d ",sum,count1);
for(int i=sum;i>1;i--)
{
map[i][count1]=map[i-1][count1-1];
}
map[1][count1]=map[sum][count1-1];
for(int i=1;i<abs(b[x]);i++)
{ int t=map[sum][count1];
for(int j=sum;j>1;j--)
{
map[j][count1]=map[j-1][count1];
}
map[1][count1]=t;
}
}
int main()
{
scanf("%d %d",&n,&m);
sum=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
for(int i=1;i<=n;i++)
{
scanf("%d",&am[i]);
sum+=am[i];
}
for(int i=1;i<=m;i++)
{
scanf("%d",&b[i]);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&bm[i]);
}
int count=sum;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=a[i];j++)
{
map[count--][1]=1;
// printf("aa\n");
}
for(int j=1;j<=am[i];j++)
{
map[count--][1]=0;
// printf("bb\n");
}
}
int count1=2;
for(int i=1;i<=m;i++)
{
if(b[i]>0)
for(int j=1;j<=bm[i];j++)
{
fun(count1,i);
count1++;
}
else if (b[i]<0)
{
for(int j=1;j<=bm[i];j++)
{
fun1(count1,i);
count1++;
}
}
else
{
for(int j=1;j<=bm[i];j++)
{
for(int i=1;i<=sum;i++)
{
map[i][count1]=map[i][count1-1];
}
count1++;
}
}
}
// printf("%d\n",count1);
int i=1;
for(;i<=sum;i++)
{
if(map[i][1]!=map[i][count1-1]) break;
}
if(i>sum)
for(int i=1;i<=sum;i++)
{
for(int j=1;j<count1-1;j++)
printf("%d",map[i][j]);
printf("\n");
}
else printf("Can not make beautilful cloth !\n");
}
hdu1278 (模拟题)
最新推荐文章于 2018-11-04 14:02:00 发布