QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#135634#4519. Rotating Display / Barbara's RobotitshawnAC ✓29ms7532kbC++143.9kb2023-08-05 19:54:162023-08-05 19:54:20

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-05 19:54:20]
  • Judged
  • Verdict: AC
  • Time: 29ms
  • Memory: 7532kb
  • [2023-08-05 19:54:16]
  • Submitted

answer

#include <iostream>
#include <stdio.h>
#include <string.h> 
using namespace std;
int n,a[101][101],c[101][101],k,ops[1000001],op;
int up[10][10] = {
//			  0   1   2   3   4   5   6   7 
//			  e   -   /   <   >   \   |  << 
/* 0 e */	{ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 },
/* 1 - */	{ 1 , 0 , 3 , 2 , 5 , 4 , 7 , 6 },
/* 2 / */	{ 2 , 4 , 0 , 6 , 1 , 7 , 3 , 5 },
/* 3 < */	{ 3 , 5 , 1 , 7 , 0 , 6 , 2 , 4 },
/* 4 > */	{ 4 , 2 , 6 , 0 , 7 , 1 , 5 , 3 }, // 
/* 5 \ */	{ 5 , 3 , 7 , 1 , 6 , 0 , 4 , 2 },
/* 6 | */	{ 6 , 7 , 4 , 5 , 2 , 3 , 0 , 1 },
/* 7 <<*/	{ 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 }};

int chan[11][11] = {
//			  e   -   /   <   >   \   |  <<
/* 0 e */	{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
/* 1 - */	{ 1 , 1 , 6 , 6 , 6 , 6 , 1 , 1 },
/* 2 / */	{ 2 , 5 , 2 , 5 , 5 , 2 , 5 , 2 },
/* 3 < */	{ 3 , 3 , 9 , 9 , 7 , 7 , 4 , 4 },
/* 4 > */	{ 4 , 4 , 7 , 7 , 9 , 9 , 3 , 3 },
/* 5 \ */	{ 5 , 2 , 5 , 2 , 2 , 5 , 2 , 5 },
/* 6 | */	{ 6 , 6 , 1 , 1 , 1 , 1 , 6 , 6 },
/* 7 ^ */	{ 7 , 9 , 4 , 3 , 4 , 3 , 7 , 9 },
/* 8 o */	{ 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 },
/* 9 v */	{ 9 , 7 , 3 , 4 , 3 , 4 , 9 , 7 },
/*10 x */	{ 10, 10, 10, 10, 10, 10, 10, 10}};

char back[11] = {' ','-','/','<','>','\\','|','^','o','v','x'};
string s;
inline int type(int x)
{
	switch(x)
	{
		case '-': return 1;
		case '/': return 2;
		case '<': return 3;
		case '>': return 4;
		case '\\': return 5;
		case '|': return 6;
		case '^': return 7;
		case 'o': return 8;
		case 'v': return 9;
		case 'x': return 10;
		default:
			return 0;
	}
	return 0;
}
void case0() // e 
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[i][j] = chan[a[i][j]][0];
	return ;
}
void case1() // - 
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[n-i+1][j] = chan[a[i][j]][1];
	return ;
}
void case2() // / 
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[n-j+1][n-i+1] = chan[a[i][j]][2];
	return ;
}
void case3() // < 
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[n-j+1][i] = chan[a[i][j]][3];
	return ;
}
void case4() // > 
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[j][n-i+1] = chan[a[i][j]][4];
	return ;
}
void case5() // \ .
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[j][i] = chan[a[i][j]][5];
	return ;
}
void case6() // | 
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[i][n-j+1] = chan[a[i][j]][6];
	return ;
}
void case7() // << 
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			c[n-i+1][n-j+1] = chan[a[i][j]][7];
	return ;
}
void change(int x)
{
	switch(x)
	{
		case 0: return case0();
		case 1: return case1();
		case 2: return case2();
		case 3: return case3();
		case 4: return case4();
		case 5: return case5();
		case 6: return case6();
		case 7: return case7();
		default:
			return ;
	}
	return ;
}
int main()
{
//	n = 3;
//	a[1][1] = 1,a[1][2] = 2,a[1][3] = 3;
//	a[2][1] = 4,a[2][2] = 5,a[2][3] = 6;
//	a[3][1] = 7,a[3][2] = 8,a[3][3] = 9;
//	
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=n;j++)
//			printf("%d",a[i][j]);
//		puts("");
//	} puts("");
//	
//	change(z);
//	
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=n;j++)
//			printf("%d",c[i][j]);
//		puts("");
//	}
//	
//	return 0;
	
	while(scanf("%d",&n)!=EOF)
	{
		getline(cin,s);
		for(int i=1;i<=n;i++)
		{
			getline(cin,s);
			for(int j=0;j<s.size();j++)
				a[i][j+1] = type(s[j]);
		}
		getline(cin,s);
		
		k = 0;
		for(int i=0;i<s.size();i+=2)
			ops[i/2+1] = type(s[i]),k++;
		
		op = 0;
//		printf(" 0 ");
		for(int i=1;i<=k;i++)
//			printf("add %d > %d ",ops[i],up[op][ops[i]]),
			op = up[op][ops[i]];
//		puts("");
		
		change(op);
		
		
//		printf("%d\n",op);
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
				printf("%c",back[c[i][j]]);
			puts("");
		}
		
	}
	
	
	
	return 0;
} 
/*
5
o</<^
/<>v/
\->|<
v^v/^
-/>>v
< \ / / / \ | \ | > < > < > | / - > < / / - | \ / | | / > \ - < | / <

3 

*/

详细

Test #1:

score: 100
Accepted
time: 29ms
memory: 7532kb

input:

4
>vv<
-/</
^/^v
/xx/
/ < - > < < < < < | < > > / | \ / < - > / < < / < - \ > > \ | / / - | | / / | - | | > |
5
o</<^
/<>v/
\->|<
v^v/^
-/>>v
< \ / / / \ | \ | > < > < > | / - > < / / - | \ / | | / > \ - < | / <
6
x/^\o/
<^xv-x
\><||v
</o\-<
^vx>\o
|x<<\/
> / / / > < / - | > \ \ < \ > > - < | - \ \ ...

output:

>vv<
-/</
^/^v
/xx/
<\v<>
v>-\^
\^^>^
vv|<\
o\/>|
x^\^<-
/<v/>x
<x^ox^
\>-\v^
o|-|\\
/x>^o/
>
|
/>-
<v-
/\x
/o^v\
/xo>v
>x/||
x<-/<
-v--x
<xvx/ov^>o
x><\-x\-vx
>^o/>\o\o>
^<<>\/<>xo
|vo\/xv/<x
v|vov<v-^v
>-o<-^x|\>
<>v/o-^o/x
<^|/-\||x/
\^>-xx><\/
oo>\v>
/|xo\|
ov|^|-
v>vxx<
>-^/-v
\x<v|^
v|/o-/
ox|...

result:

ok 404 lines