📄 2495479_ac_0ms_192k.c
字号:
#include <stdio.h>
#include <string.h>
int h, w;
int num, step, cas = 1;
int map[21][21], col[21], row[21];
int up, down, left, right;
int main()
{
int i, j, max;
int x, y;
char dir[6];
while(scanf("%d%d",&h,&w)==2&&w)
{
scanf("%d",&num);
memset(map,0,sizeof(map));
memset(col,0,sizeof(col));
memset(row,0,sizeof(row));
for(i = 0; i < num; i++)
scanf("%d%d",&x,&y), map[x][y] = 1, row[x]++, col[y]++;
while(scanf("%s",dir)==1&&strcmp(dir,"done")!=0)
{
max = -1;
up = left = 0;right = w;down = h;
scanf("%d",&step);
switch(dir[0])
{
case 'd':
for(i = left; i < right; i++)
if(col[i]>max)
max = col[i];
if(step > down-up-max)
step = down-up-max;
while(step>0)
{
row[up] = 0;
step--;
for(i = left; i < right; i++)
{
j = up;
while(map[j][i])
j++;
if(j==up)
continue;
map[up][i] = 0;
map[j][i] = 1;
row[j]++;
}
up++;
}
break;
case 'u':
for(i = left; i < right; i++)
if(col[i]>max)
max = col[i];
if(step > down-up-max)
step = down-up-max;
while(step>0)
{
step--;
down--;
for(i = left; i < right; i++)
{
j = down;
while(map[j][i])
j--;
if(j==down)
continue;
map[down][i] = 0;
map[j][i] = 1;
row[j]++;
}
row[down] = 0;
}
break;
case 'l':
for(i = up; i < down; i++)
if(row[i]>max)
max = row[i];
if(step > right-left-max)
step = right-left-max;
while(step>0)
{
step--;
right--;
for(i = up; i < down; i++)
{
j = right;
while(map[i][j])
j--;
if(j==right)
continue;
map[i][right] = 0;
map[i][j] = 1;
col[j]++;
}
col[right] = 0;
}
break;
case 'r':
for(i = up; i < down; i++)
if(row[i]>max)
max = row[i];
if(step > right-left-max)
step = right-left-max;
while(step>0)
{
step--;
col[left] = 0;
for(i = up; i < down; i++)
{
j = left;
while(map[i][j])
j++;
if(j==left)
continue;
map[i][left] = 0;
map[i][j] = 1;
col[j]++;
}
left++;
}
}
}
printf("Data set %d ends with boxes at locations ",cas++);
for(i = up; i < down; i++)
for(j = left; j < right; j++)
if(map[i][j])
{
num--;
printf("(%d,%d)",i,j);
if(num)
printf(" ");
else
printf(".\n");
}
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -