提出 #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 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| 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 |