結果
| 問題 | No.871 かえるのうた |
| コンテスト | |
| ユーザー |
lunnear
|
| 提出日時 | 2019-11-01 22:09:12 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.89.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;
}
lunnear