結果
問題 | No.1315 渦巻洞穴 |
ユーザー |
![]() |
提出日時 | 2020-12-13 01:43:35 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,194 bytes |
コンパイル時間 | 157 ms |
コンパイル使用メモリ | 33,408 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-19 22:41:01 |
合計ジャッジ時間 | 3,104 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 79 |
コンパイルメッセージ
main.c: In function 'locate': main.c:7:20: warning: implicit declaration of function 'sqrt' [-Wimplicit-function-declaration] 7 | int r=(int)sqrt(s-1)+1&~1; | ^~~~ main.c:1:1: note: include '<math.h>' or provide a declaration of 'sqrt' +++ |+#include <math.h> 1 | #pragma GCC optimize("Ofast") main.c:7:20: warning: incompatible implicit declaration of built-in function 'sqrt' [-Wbuiltin-declaration-mismatch] 7 | int r=(int)sqrt(s-1)+1&~1; | ^~~~ main.c:7:20: note: include '<math.h>' or provide a declaration of 'sqrt' main.c: In function 'move': main.c:29:27: warning: multi-character character constant [-Wmultichar] 29 | *(int*)wp='RRLR'; | ^~~~~~ main.c:34:27: warning: multi-character character constant [-Wmultichar] 34 | *(int*)wp='LLRL'; | ^~~~~~ main.c:42:27: warning: multi-character character constant [-Wmultichar] 42 | *(int*)wp='DDUD'; | ^~~~~~ main.c:47:27: warning: multi-character character constant [-Wmultichar] 47 | *(int*)wp='UUDU'; | ^~~~~~ main.c: In function 'main': main.c:55:9: warning: implicit declaration of function 'read' [-Wimplicit-function-declaration] 55 | read(0,buf,32); | ^~~~ main.c:68:27: warning: multi-character character constant [-Wmultichar] 68 | *(int*)wp='LURL'; | ^~~~~~ main.c:73:27: warning: multi-character character constant [-Wmultichar] 73 | *(int*)wp='DLUR'; | ^~~~~~ main.c:75:27: warning: multi-character character constant [-Wmultichar] 75 | *(int*)wp='DU'; | ^~~~ main.c:86:9: warning: implicit declaration of function 'write' [-Wimplicit-function-declaration] 86 |
ソースコード
#pragma GCC optimize("Ofast") #pragma GCC target("avx2") #define RD(v) int v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} void locate(int s,int*px,int*py){ int r=(int)sqrt(s-1)+1&~1; int r1=r>>1; int t=(r+1)*(r+1)-s; if(t<r){ *px=r1-t; *py=r1; }else if(t-=r,t<r){ *px=-r1; *py=r1-t; }else if(t-=r,t<r){ *px=-r1+t; *py=-r1; }else if(t-=r,1){ *px=r1; *py=-r1+t; } } char buf[200040],*wp; void move(int x,int y){ while(x>0){ *(int*)wp='RRLR'; wp+=4; x-=2; } while(x<0){ *(int*)wp='LLRL'; wp+=4; x+=2; } if(x){ wp[-1]='U';++y; } while(y>0){ *(int*)wp='DDUD'; wp+=4; y-=2; } while(y<0){ *(int*)wp='UUDU'; wp+=4; y+=2; } --wp; } int main(){ read(0,buf,32); char*rp=buf; RD(s); RD(t); int sx,sy,tx,ty; locate(s,&sx,&sy); locate(t,&tx,&ty); wp=buf+32; if(s+t&1){ move(tx-sx,ty-sy); }else if(s&1){ move(1-sx,0-sy); *(int*)wp='LURL'; wp+=4; move(tx-0,ty+1); }else{ move(0-sx,0-sy); *(int*)wp='DLUR'; wp+=4; *(int*)wp='DU'; wp+=2; move(tx-0,ty-0); } char*wp2=buf+32; int n=wp-wp2; *wp++='\n'; *--wp2='\n'; while(*--wp2=n%10+'0',n/=10); *--wp2='\n'; *--wp2='0'; write(1,wp2,wp-wp2); _exit(0); }