洛谷P4924 魔法少女小Scarlet
题目
https://www.luogu.com.cn/problem/P4924
思路
水题,直接模拟即可,纯粹是因为二小姐太可爱了才去做这道题的。
二小姐卡哇伊!!!(震声)
然而手癌晚期的我开不了红魔乡extra
代码
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[501][501];
void rightrotate(int x,int y,int r){
int i,j,t=0,x1,x2,y1,y2,k;
for(i=x-r;i<x;++i){
for(j=y-r+t;j<y+r-t;++j){
x1=i;y1=j;
for(k=1;k<=3;k++){
x2=x-(y1-y);y2=y+(x1-x);
swap(a[x1][y1],a[x2][y2]);
x1=x2;y1=y2;
}
}
t++;
}
}
void leftrotate(int x,int y,int r){
int i,j,t=0,x1,x2,y1,y2,k;
for(i=x-r;i<x;++i){
for(j=y-r+t;j<y+r-t;++j){
x1=i;y1=j;
for(k=1;k<=3;k++){
x2=x+(y1-y);y2=y-(x1-x);
swap(a[x1][y1],a[x2][y2]);
x1=x2;y1=y2;
}
}
t++;
}
}
int main(){
int n,m,i,j,x,y,r,z;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
a[i][j]=(i-1)*n+j;
for(i=1;i<=m;i++){
scanf("%d%d%d%d",&x,&y,&r,&z);
if(z) leftrotate(x,y,r);
else rightrotate(x,y,r);
}
for(i=1;i<=n;++i){
for(j=1;j<=n;++j)
printf("%d ",a[i][j]);
printf("\n");
}
// system("pause");
return 0;
}