結果
問題 | No.871 かえるのうた |
ユーザー | onakaT_Titai |
提出日時 | 2019-06-12 15:59:58 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 121 ms / 2,000 ms |
コード長 | 1,243 bytes |
コンパイル時間 | 1,430 ms |
コンパイル使用メモリ | 169,680 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-30 10:43:21 |
合計ジャッジ時間 | 4,304 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main(void){ // Your code here! int N; cin >> N; assert(1 <= N && N <= 100000); int K; cin >> K; assert(1 <= K && K <= N); 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++) { cin >> X[i]; assert(-100000000000000000 <= X[i] && X[i] <= 100000000000000000); if (2 <= i) { assert(X[i-1] < X[i]); } } for (int i = 1; i <= N; i++) { cin >> A[i]; assert(0 < A[i] && A[i] < 100000000000000000); } 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; } } cout << rFrog - lFrog - 1 << endl; return 0; }