样例过了,最后一个测试点过了,其他都WA
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,arr[501][501];
void init(){
int c=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
arr[j][i]=c++;
}
void rvs(int cx,int cy,int r,int z){
int q[501][501];
for(int y=-r;y<=r;y++){
for(int x=-r;x<=r;x++){
int k=z?1:-1;
int tox=cx+y*k,toy=cy+x*(-k),nowx=cx+x,nowy=cy+y;
q[tox][toy]=arr[nowx][nowy];//将目标位置存在副本里
}
}
for(int y=-r;y<=r;y++){
for(int x=-r;x<=r;x++){
int nowx=cx+x,nowy=cy+y;
arr[nowx][nowy]=q[nowx][nowy];//将副本中的元素加入到结果数组
}
}
}
void p(){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<arr[j][i]<<" ";
}
cout<<endl;
}
}
signed main(){
cin>>n>>m;
init();//创建1-n^2初始数组
for(int i=0;i<m;i++){
int x,y,r,z;
cin>>x>>y>>r>>z;
rvs(x,y,r,z);//以(x,y)为中心旋转
}
p();//打印处理后数组
return 0;
}