結果
| 問題 |
No.871 かえるのうた
|
| コンテスト | |
| ユーザー |
onakaT_Titai
|
| 提出日時 | 2019-06-12 16:01:03 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 33 ms / 2,000 ms |
| コード長 | 1,270 bytes |
| コンパイル時間 | 1,589 ms |
| コンパイル使用メモリ | 168,852 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-30 10:43:15 |
| 合計ジャッジ時間 | 3,496 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 49 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main(void){
cin.tie(0);
ios::sync_with_stdio(false);
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;
}
onakaT_Titai