結果

問題 No.1315 渦巻洞穴
ユーザー tails
提出日時 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 |        

ソースコード

diff #

#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);
}
0