結果
問題 | No.871 かえるのうた |
ユーザー |
![]() |
提出日時 | 2019-08-31 02:18:15 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 38 ms / 2,000 ms |
コード長 | 1,104 bytes |
コンパイル時間 | 1,769 ms |
コンパイル使用メモリ | 168,828 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-30 10:51:49 |
合計ジャッジ時間 | 3,941 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
ソースコード
// ※※※ 解答不能 ※※※. // 以下のソースを勉強する. // onakaT_Titai氏. // https://yukicoder.me/submissions/351154 #include <bits/stdc++.h> using namespace std; int main(void){ int N; scanf("%d", &N); int K; scanf("%d", &K); vector<long long> X(N + 2); vector<long long> A(N + 2); X[0] = -1000000000000000000; X[N + 1] = 1000000000000000000; for(int i = 1; i <= N; i++) scanf("%lld", &X[i]); for(int i = 1; i <= N; i++) scanf("%lld", &A[i]); long long l = X[K] - A[K]; long long r = X[K] + A[K]; long long rFrog = K + 1; long long lFrog = K - 1; int flag = 1; while(flag){ flag = 0; if(X[rFrog] <= r){ r = max(X[rFrog] + A[rFrog], r); l = min(X[rFrog] - A[rFrog], l); rFrog += 1; flag = 1; } if(l <= X[lFrog]){ r = max(X[lFrog] + A[lFrog], r); l = min(X[lFrog] - A[lFrog], l); lFrog -= 1; flag = 1; } } printf("%lld", rFrog - lFrog - 1); return 0; }