結果
問題 | No.871 かえるのうた |
ユーザー |
![]() |
提出日時 | 2020-11-02 19:05:32 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 5 ms / 2,000 ms |
コード長 | 798 bytes |
コンパイル時間 | 685 ms |
コンパイル使用メモリ | 30,976 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-30 11:04:39 |
合計ジャッジ時間 | 2,539 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
コンパイルメッセージ
main.c:10:1: warning: return type defaults to 'int' [-Wimplicit-int] 10 | main(){ | ^~~~ main.c: In function 'main': main.c:41:9: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] 41 | printf("%d",bi-ai+1); | ^~~~~~ main.c:1:1: note: include '<stdio.h>' or provide a declaration of 'printf' +++ |+#include <stdio.h> 1 | #pragma GCC optimize("Ofast") main.c:41:9: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch] 41 | printf("%d",bi-ai+1); | ^~~~~~ main.c:41:9: note: include '<stdio.h>' or provide a declaration of 'printf'
ソースコード
#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define RD(v) int v=0;{int c;while(c=*rp++-48,c>=0)v=v*10+c;} #define RDL(v) long v=0;{int c;while(c=*rp++-48,c>=0)v=v*10+c;} long x[100002],a[100002]; main(){ char*rp=mmap(0l,20l*200002,1,2,0,0ll); RD(n); RD(k); for(int i=0;++i<=n;){ int neg=*rp==45?++rp,1:0; RDL(t); x[i]=neg?-t:t; } x[0]=1l<<63; x[n+1]=x[0]-1; for(int i=0;++i<=n;){ RDL(t); a[i]=t; } int ai=k,bi=k; long ax=x[k]-a[k],bx=x[k]+a[k]; long prev_ax; do{ prev_ax=ax; while(x[ai-1]>=ax){ --ai; if(ax>x[ai]-a[ai]) ax=x[ai]-a[ai]; if(bx<x[ai]+a[ai]) bx=x[ai]+a[ai]; } while(x[bi+1]<=bx){ ++bi; if(ax>x[bi]-a[bi]) ax=x[bi]-a[bi]; if(bx<x[bi]+a[bi]) bx=x[bi]+a[bi]; } }while(prev_ax!=ax); printf("%d",bi-ai+1); }