Submission #232718
Source Code Expand
#include <cstdio> #include <cstdlib> #include <cstring> #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; const int dx[]={1,0,-1,0},dy[]={0,-1,0,1}; int h,w; char B[50][51]; int idx,ans; char s[1001]; int x,y,dir; bool vis[50][50][4][1001]; // [y][x][dir][idx] void program(); void skip(){ for(int c1=0,c2=0;s[idx];idx++){ switch(s[idx]){ case '[': c1++; break; case '{': c2++; break; case ']': c1--; if(c1<0) return; break; case '}': c2--; if(c2<0) return; break; } } } bool condition(){ bool neg=false; if(s[idx]=='~') neg=true, idx++; switch(s[idx]){ case 'N': idx++; return neg^(dir==1); case 'E': idx++; return neg^(dir==0); case 'S': idx++; return neg^(dir==3); case 'W': idx++; return neg^(dir==2); case 'C': idx++; return neg^(B[y+dy[dir]][x+dx[dir]]=='#'); case 'T': idx++; return !neg; } } void sentence(){ // if if(s[idx]=='['){ idx++; if(condition()) program(); else skip(); idx++; } // while else if(s[idx]=='{'){ idx++; int idx0=idx; while(condition()){ if(vis[y][x][dir][idx]) puts("-1"), exit(0); vis[y][x][dir][idx]=true; program(); idx=idx0; } skip(); idx++; } // move else{ ans++; int dir2=(dir+2)%4; switch(s[idx]){ case '^': if(B[y+dy[dir ]][x+dx[dir ]]!='#') y+=dy[dir ], x+=dx[dir ]; break; case 'v': if(B[y+dy[dir2]][x+dx[dir2]]!='#') y+=dy[dir2], x+=dx[dir2]; break; case '<': dir=(dir+1)%4; break; case '>': dir=(dir+3)%4; break; } if(B[y][x]=='g') printf("%d\n",ans), exit(0); idx++; } } void program(){ while(s[idx] && strchr("[{^v<>",s[idx])) sentence(); } int main(){ scanf("%d%d",&h,&w); rep(i,h) scanf("%s",B[i]); scanf("%s",s); rep(i,h) rep(j,w) if(B[i][j]=='s') y=i, x=j, B[i][j]='.'; dir=1; idx=ans=0; program(); puts("-1"); return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - AI |
User | fura2 |
Language | C++ (GCC 4.4.7) |
Score | 100 |
Code Size | 1917 Byte |
Status | AC |
Exec Time | 80 ms |
Memory | 9896 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:87: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result ./Main.cpp:88: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result ./Main.cpp:89: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00-sample1, 00-sample2, 00-sample3, 01-corner-empty, 01-corner-infinite-loop1, 01-corner-infinite-loop2, 01-corner-infinite-loop3, 01-corner-infinite-loop4, 02-large1, 02-large2, 02-large3, 02-large4, 02-large5, 02-large6, 03-misc1, 03-misc2, 04-maze-move-only-failure1, 04-maze-move-only-failure10, 04-maze-move-only-failure2, 04-maze-move-only-failure3, 04-maze-move-only-failure4, 04-maze-move-only-failure5, 04-maze-move-only-failure6, 04-maze-move-only-failure7, 04-maze-move-only-failure8, 04-maze-move-only-failure9, 04-maze-move-only-success1, 04-maze-move-only-success10, 04-maze-move-only-success2, 04-maze-move-only-success3, 04-maze-move-only-success4, 04-maze-move-only-success5, 04-maze-move-only-success6, 04-maze-move-only-success7, 04-maze-move-only-success8, 04-maze-move-only-success9, 04-maze-random-failure1, 04-maze-random-failure10, 04-maze-random-failure2, 04-maze-random-failure3, 04-maze-random-failure4, 04-maze-random-failure5, 04-maze-random-failure6, 04-maze-random-failure7, 04-maze-random-failure8, 04-maze-random-failure9, 04-maze-random-success1, 04-maze-random-success10, 04-maze-random-success2, 04-maze-random-success3, 04-maze-random-success4, 04-maze-random-success5, 04-maze-random-success6, 04-maze-random-success7, 04-maze-random-success8, 04-maze-random-success9, 04-maze-simple-failure1, 04-maze-simple-failure10, 04-maze-simple-failure2, 04-maze-simple-failure3, 04-maze-simple-failure4, 04-maze-simple-failure5, 04-maze-simple-failure6, 04-maze-simple-failure7, 04-maze-simple-failure8, 04-maze-simple-failure9, 04-maze-simple-success1, 04-maze-simple-success10, 04-maze-simple-success2, 04-maze-simple-success3, 04-maze-simple-success4, 04-maze-simple-success5, 04-maze-simple-success6, 04-maze-simple-success7, 04-maze-simple-success8, 04-maze-simple-success9, 05-nest1, 05-nest2, 06-long1 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00-sample1 | AC | 25 ms | 796 KB |
00-sample2 | AC | 25 ms | 920 KB |
00-sample3 | AC | 26 ms | 736 KB |
01-corner-empty | AC | 30 ms | 676 KB |
01-corner-infinite-loop1 | AC | 26 ms | 840 KB |
01-corner-infinite-loop2 | AC | 32 ms | 748 KB |
01-corner-infinite-loop3 | AC | 27 ms | 800 KB |
01-corner-infinite-loop4 | AC | 26 ms | 668 KB |
02-large1 | AC | 49 ms | 7588 KB |
02-large2 | AC | 57 ms | 9896 KB |
02-large3 | AC | 55 ms | 9504 KB |
02-large4 | AC | 57 ms | 9504 KB |
02-large5 | AC | 66 ms | 9896 KB |
02-large6 | AC | 80 ms | 9892 KB |
03-misc1 | AC | 24 ms | 800 KB |
03-misc2 | AC | 25 ms | 804 KB |
04-maze-move-only-failure1 | AC | 23 ms | 924 KB |
04-maze-move-only-failure10 | AC | 26 ms | 736 KB |
04-maze-move-only-failure2 | AC | 26 ms | 924 KB |
04-maze-move-only-failure3 | AC | 25 ms | 916 KB |
04-maze-move-only-failure4 | AC | 25 ms | 796 KB |
04-maze-move-only-failure5 | AC | 25 ms | 928 KB |
04-maze-move-only-failure6 | AC | 27 ms | 804 KB |
04-maze-move-only-failure7 | AC | 24 ms | 796 KB |
04-maze-move-only-failure8 | AC | 25 ms | 800 KB |
04-maze-move-only-failure9 | AC | 23 ms | 924 KB |
04-maze-move-only-success1 | AC | 24 ms | 804 KB |
04-maze-move-only-success10 | AC | 24 ms | 924 KB |
04-maze-move-only-success2 | AC | 24 ms | 800 KB |
04-maze-move-only-success3 | AC | 24 ms | 924 KB |
04-maze-move-only-success4 | AC | 29 ms | 792 KB |
04-maze-move-only-success5 | AC | 24 ms | 672 KB |
04-maze-move-only-success6 | AC | 25 ms | 796 KB |
04-maze-move-only-success7 | AC | 25 ms | 924 KB |
04-maze-move-only-success8 | AC | 25 ms | 796 KB |
04-maze-move-only-success9 | AC | 26 ms | 796 KB |
04-maze-random-failure1 | AC | 26 ms | 796 KB |
04-maze-random-failure10 | AC | 26 ms | 928 KB |
04-maze-random-failure2 | AC | 24 ms | 924 KB |
04-maze-random-failure3 | AC | 26 ms | 800 KB |
04-maze-random-failure4 | AC | 26 ms | 804 KB |
04-maze-random-failure5 | AC | 26 ms | 708 KB |
04-maze-random-failure6 | AC | 26 ms | 816 KB |
04-maze-random-failure7 | AC | 25 ms | 920 KB |
04-maze-random-failure8 | AC | 25 ms | 796 KB |
04-maze-random-failure9 | AC | 25 ms | 800 KB |
04-maze-random-success1 | AC | 25 ms | 924 KB |
04-maze-random-success10 | AC | 25 ms | 924 KB |
04-maze-random-success2 | AC | 23 ms | 920 KB |
04-maze-random-success3 | AC | 25 ms | 796 KB |
04-maze-random-success4 | AC | 25 ms | 796 KB |
04-maze-random-success5 | AC | 25 ms | 800 KB |
04-maze-random-success6 | AC | 24 ms | 924 KB |
04-maze-random-success7 | AC | 24 ms | 804 KB |
04-maze-random-success8 | AC | 25 ms | 920 KB |
04-maze-random-success9 | AC | 25 ms | 920 KB |
04-maze-simple-failure1 | AC | 24 ms | 788 KB |
04-maze-simple-failure10 | AC | 25 ms | 916 KB |
04-maze-simple-failure2 | AC | 26 ms | 732 KB |
04-maze-simple-failure3 | AC | 23 ms | 792 KB |
04-maze-simple-failure4 | AC | 26 ms | 788 KB |
04-maze-simple-failure5 | AC | 25 ms | 796 KB |
04-maze-simple-failure6 | AC | 24 ms | 928 KB |
04-maze-simple-failure7 | AC | 24 ms | 808 KB |
04-maze-simple-failure8 | AC | 26 ms | 808 KB |
04-maze-simple-failure9 | AC | 25 ms | 928 KB |
04-maze-simple-success1 | AC | 25 ms | 796 KB |
04-maze-simple-success10 | AC | 24 ms | 924 KB |
04-maze-simple-success2 | AC | 24 ms | 924 KB |
04-maze-simple-success3 | AC | 23 ms | 928 KB |
04-maze-simple-success4 | AC | 26 ms | 928 KB |
04-maze-simple-success5 | AC | 25 ms | 784 KB |
04-maze-simple-success6 | AC | 26 ms | 796 KB |
04-maze-simple-success7 | AC | 26 ms | 808 KB |
04-maze-simple-success8 | AC | 25 ms | 796 KB |
04-maze-simple-success9 | AC | 26 ms | 916 KB |
05-nest1 | AC | 26 ms | 808 KB |
05-nest2 | AC | 26 ms | 808 KB |
06-long1 | AC | 61 ms | 4640 KB |