結果
問題 |
No.871 かえるのうた
|
ユーザー |
![]() |
提出日時 | 2019-11-01 22:09:12 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,015 bytes |
コンパイル時間 | 806 ms |
コンパイル使用メモリ | 82,868 KB |
最終ジャッジ日時 | 2025-01-08 02:13:39 |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 46 TLE * 2 MLE * 1 |
ソースコード
#include <iostream> #include <list> #include <cmath> using namespace std; typedef long long s8; struct Frog { s8 pos; s8 vol; bool check = false; }; list<s8> getResList(Frog *f, s8 *n, s8 *k) { list<s8> res; for(int i = *k - 1; i >= 0; i--) { if(abs(f[i].pos - f[(*k)].pos) <= f[(*k)].vol) res.push_back(i); else break; } for(int i = *k + 1; i < *n; i++) { if(abs(f[i].pos - f[(*k)].pos) <= f[(*k)].vol) res.push_back(i); else break; } return res; } int solve(Frog *f, s8 *n, s8 *k) { int ans = 0; list<s8> res = getResList(f, n, k); for(auto i = res.begin(); i != res.end(); i++) { if(f[(*i)].check) continue; f[(*i)].check = true; ans++; ans += solve(f, n, &(*i)); } return ans; } int main() { s8 n, k; cin >> n >> k; k--; Frog frog[n]; for(int i = 0; i < n; i++) { cin >> frog[i].pos; } for(int i = 0; i < n; i++) { cin >> frog[i].vol; } int ans = 1; frog[k].check = true; ans += solve(frog, &n, &k); cout << ans << endl; }