为什么RE?
  • 板块灌水区
  • 楼主SFlyer
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/6 15:34
  • 上次更新2023/11/3 05:35:06
查看原帖
为什么RE?
489890
SFlyer楼主2023/8/6 15:34

problem

#include <bits/stdc++.h>

using namespace std;

#define de(x) cout<<#x<<"="<<x<<endl

using ll = long long;

const int N = 1e2+3;

int n;
string c[N],d[N];
string op;

char turn(char x){
	if (x=='x' || x=='o') return x;
	if (x=='<') return 'v';
	if (x=='v') return '>';
	if (x=='>') return '^';
	if (x=='^') return '<';
	if (x=='|' || x=='-') return '|'+'-'-x;
	return '/'+'\\'-x;
}

char rever(char x){
	if (x=='<' || x=='>') return '>'+'<'-x;
	if (x=='/' || x=='\\') return '/'+'\\'-x;
	return x;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	while (cin>>n){
		for (int i=1; i<=n; i++){
			cin>>c[i];
			c[i]=" "+c[i];
		}
		cin.ignore();
		getline(cin,op);
		int tur=0,rev=1;
		for (int i=0; i<op.size(); i+=2){
			if (op[i]=='<') tur=(tur+4+rev)%4;
			if (op[i]=='>') tur=(tur+4-rev)%4;
			if (op[i]=='-') tur=(tur+2)%4,rev=-rev;
			if (op[i]=='|') rev=-rev;
			if (op[i]=='/') tur=(tur+4+rev)%4,rev=-rev;
			if (op[i]=='\\') tur=(tur+4-rev)%4,rev=-rev;
		}
		while (tur--){
			for (int i=1; i<=n; i++){
				for (int j=1; j<=n; j++){
					d[n+1-j][i]=turn(c[i][j]);
				}
			}
			for (int i=1; i<=n; i++){
				for (int j=1; j<=n; j++){
					c[i][j]=d[i][j];
				}
			}
		}
		if (rev<0){
			for (int i=1; i<=n; i++){
				for (int j=1; j<=n; j++){
					d[i][n+1-j]=rever(c[i][j]);
				}
			}
			for (int i=1; i<=n; i++){
				for (int j=1; j<=n; j++){
					c[i][j]=d[i][j];
				}
			}
		}
		for (int i=1; i<=n; i++){
			for (int j=1; j<=n; j++){
				cout<<c[i][j];
			}
			cout<<endl;
		}
	} 
	return 0;
}
2023/8/6 15:34
加载中...