提出 #577964


ソースコード 拡げる

#include <stdio.h>

int N;

struct node
{
	int mov[10005];
	node operator+(const node& rhs) const
	{
		node ret;
		for(int i=1; i<=N; i++){
			ret.mov[i]=rhs.mov[mov[i]];
		}
		return ret;
	}
};

char inp[1005];

node idi;
node ori[4][105];

int mmp[128];

void build(int n)
{
	mmp['U']=0;
	mmp['R']=1;
	mmp['D']=2;
	mmp['L']=3;
	for(int i=1; i<=N; i++)
		idi.mov[i]=i;
	for(int i=1; i<=n; i++){
		ori[0][i]=idi;
		ori[0][i].mov[i]+=N-n;
		for(int j=2; j<=n; j++){
			ori[0][i].mov[(j-1)*n+i]-=n;
		}
	}
	for(int i=1; i<=n; i++){
		ori[1][i]=idi;
		ori[1][i].mov[(i-1)*n+n]-=n-1;
		for(int j=1; j<n; j++){
			ori[1][i].mov[(i-1)*n+j]+=1;
		}
	}
	for(int i=1; i<=n; i++){
		ori[2][i]=idi;
		ori[2][i].mov[(n-1)*n+i]-=N-n;
		for(int j=1; j<n; j++){
			ori[2][i].mov[(j-1)*n+i]+=n;
		}
	}
	for(int i=1; i<=n; i++){
		ori[3][i]=idi;
		ori[3][i].mov[(i-1)*n+1]+=n-1;
		for(int j=2; j<=n; j++){
			ori[3][i].mov[(i-1)*n+j]-=1;
		}
	}
}

node mpow(node a, int n)
{
	node ret=idi;
	while(n){
		if(n&1)
			ret=ret+a;
		a=a+a;
		n>>=1;
	}
	return ret;
}

void go(char str[],int &pos, node &now)
{
	now=idi;
	if(str[pos]=='('){
		pos++;
		do{
			node ret;
			go(str,pos,ret);
			now=now+ret;
		}while(str[pos]!=')');
		pos++;
		int num=0;
		while(str[pos]>='0' && str[pos]<='9'){
			num=num*10+str[pos++]-'0';
		}
		now=mpow(now,num);
	}else{
		while(str[pos]>='A' && str[pos]<='Z'){
			int way=mmp[(int)str[pos++]];
			int num=0;
			while(str[pos]>='0' && str[pos]<='9'){
				num=num*10+str[pos++]-'0';
			}
			now=now+ori[way][num];
		}
	}
}

int main()
{
	int n,l;
	scanf("%d %d",&n,&l);
	N=n*n;
	build(n);
	scanf("%s",inp);
	if(n==1){
		printf("1\n");
		return 0;
	}
	int pos=0;
	node ans=idi;
	while(inp[pos]!='\0'){
		node ret;
		go(inp,pos,ret);
		ans=ans+ret;
	}
	node pri;
	for(int i=1; i<=N; i++)
		pri.mov[ans.mov[i]]=i;
	for(int i=1; i<=N; i++)
		printf("%d%c",pri.mov[i],i%n==0?'\n':' ');
	return 0;
}

提出情報

提出日時
問題 E - Shifting a Matrix
ユーザ bsnipers
言語 C++11 (GCC 4.8.1)
得点 100
コード長 2031 Byte
結果 AC
実行時間 180 ms
メモリ 68512 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:106:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&l);
                      ^
./Main.cpp:109:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",inp);
                 ^

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 49
セット名 テストケース
All 00_sample_00, 00_sample_01, 00_sample_02, 10_basic_rnd_small_000, 10_basic_rnd_small_001, 10_basic_rnd_small_002, 10_basic_rnd_small_003, 10_basic_rnd_small_004, 11_basic_rnd_med_000, 11_basic_rnd_med_001, 11_basic_rnd_med_002, 11_basic_rnd_med_003, 11_basic_rnd_med_004, 12_basic_rnd_med_000, 12_basic_rnd_med_001, 12_basic_rnd_med_002, 12_basic_rnd_med_003, 12_basic_rnd_med_004, 13_basic_rnd_large_000, 13_basic_rnd_large_001, 13_basic_rnd_large_002, 13_basic_rnd_large_003, 13_basic_rnd_large_004, 13_basic_rnd_large_005, 13_basic_rnd_large_006, 13_basic_rnd_large_007, 13_basic_rnd_large_008, 13_basic_rnd_large_009, 23_many_loop_rnd_large_000, 23_many_loop_rnd_large_001, 23_many_loop_rnd_large_002, 23_many_loop_rnd_large_003, 23_many_loop_rnd_large_004, 23_many_loop_rnd_large_005, 23_many_loop_rnd_large_006, 23_many_loop_rnd_large_007, 23_many_loop_rnd_large_008, 23_many_loop_rnd_large_009, 33_low_loop_large_000, 33_low_loop_large_001, 33_low_loop_large_002, 33_low_loop_large_003, 33_low_loop_large_004, 33_low_loop_large_005, 33_low_loop_large_006, 33_low_loop_large_007, 33_low_loop_large_008, 33_low_loop_large_009, 90_challenge_00
ケース名 結果 実行時間 メモリ
00_sample_00 AC 24 ms 1244 KiB
00_sample_01 AC 24 ms 1556 KiB
00_sample_02 AC 27 ms 1388 KiB
10_basic_rnd_small_000 AC 25 ms 1568 KiB
10_basic_rnd_small_001 AC 24 ms 1564 KiB
10_basic_rnd_small_002 AC 24 ms 1056 KiB
10_basic_rnd_small_003 AC 24 ms 1312 KiB
10_basic_rnd_small_004 AC 23 ms 1432 KiB
11_basic_rnd_med_000 AC 26 ms 2336 KiB
11_basic_rnd_med_001 AC 28 ms 2928 KiB
11_basic_rnd_med_002 AC 28 ms 2972 KiB
11_basic_rnd_med_003 AC 26 ms 2328 KiB
11_basic_rnd_med_004 AC 26 ms 2720 KiB
12_basic_rnd_med_000 AC 24 ms 2204 KiB
12_basic_rnd_med_001 AC 24 ms 2208 KiB
12_basic_rnd_med_002 AC 26 ms 2596 KiB
12_basic_rnd_med_003 AC 25 ms 2204 KiB
12_basic_rnd_med_004 AC 27 ms 2840 KiB
13_basic_rnd_large_000 AC 63 ms 13732 KiB
13_basic_rnd_large_001 AC 59 ms 12456 KiB
13_basic_rnd_large_002 AC 60 ms 13720 KiB
13_basic_rnd_large_003 AC 90 ms 19360 KiB
13_basic_rnd_large_004 AC 89 ms 20256 KiB
13_basic_rnd_large_005 AC 99 ms 21480 KiB
13_basic_rnd_large_006 AC 78 ms 16860 KiB
13_basic_rnd_large_007 AC 63 ms 14616 KiB
13_basic_rnd_large_008 AC 61 ms 13080 KiB
13_basic_rnd_large_009 AC 78 ms 17124 KiB
23_many_loop_rnd_large_000 AC 89 ms 19424 KiB
23_many_loop_rnd_large_001 AC 104 ms 22492 KiB
23_many_loop_rnd_large_002 AC 106 ms 25368 KiB
23_many_loop_rnd_large_003 AC 120 ms 28068 KiB
23_many_loop_rnd_large_004 AC 79 ms 18464 KiB
23_many_loop_rnd_large_005 AC 88 ms 19988 KiB
23_many_loop_rnd_large_006 AC 87 ms 21272 KiB
23_many_loop_rnd_large_007 AC 121 ms 25628 KiB
23_many_loop_rnd_large_008 AC 116 ms 26524 KiB
23_many_loop_rnd_large_009 AC 126 ms 27992 KiB
33_low_loop_large_000 AC 66 ms 17820 KiB
33_low_loop_large_001 AC 58 ms 14752 KiB
33_low_loop_large_002 AC 49 ms 11532 KiB
33_low_loop_large_003 AC 43 ms 9496 KiB
33_low_loop_large_004 AC 64 ms 17192 KiB
33_low_loop_large_005 AC 51 ms 11940 KiB
33_low_loop_large_006 AC 62 ms 15772 KiB
33_low_loop_large_007 AC 64 ms 15912 KiB
33_low_loop_large_008 AC 61 ms 14496 KiB
33_low_loop_large_009 AC 65 ms 16160 KiB
90_challenge_00 AC 180 ms 68512 KiB