結果
問題 | No.871 かえるのうた |
ユーザー |
![]() |
提出日時 | 2019-08-30 21:58:29 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 115 ms / 2,000 ms |
コード長 | 907 bytes |
コンパイル時間 | 1,498 ms |
コンパイル使用メモリ | 169,164 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-30 10:46:32 |
合計ジャッジ時間 | 4,254 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
ソースコード
#include<bits/stdc++.h>#define REP(i,n) for(int i=0,i##_len=(n);i<i##_len;++i)#define rep(i,a,b) for(int i=int(a);i<int(b);++i)#define All(x) (x).begin(),(x).end()using namespace std;int main(){int N,K;cin>>N>>K;K--;vector<long long> X(N),A(N);REP(i,N) cin>>X[i];REP(i,N) cin>>A[i];vector<long long> ranl(N),ranr(N);REP(i,N) {ranl[i]=X[i]-A[i],ranr[i]=X[i]+A[i];}int l=K-1,r=K+1;long long left=ranl[K];long long right=ranr[K];while(0<=l||r<N){bool nuke=true;if(0<=l&&left<=X[l]){nuke=false;left=min(left,ranl[l]);right=max(right,ranr[l]);l--;}if(r<N&&X[r]<=right){nuke=false;right=max(ranr[r],right);left=min(left,ranl[r]);r++;}if(nuke) break;}cout<<r-l-1<<endl;}