結果
| 問題 | No.3424 Shooting Game |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-12-10 23:48:34 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 371 ms / 2,000 ms |
| コード長 | 1,056 bytes |
| 記録 | |
| コンパイル時間 | 3,376 ms |
| コンパイル使用メモリ | 347,840 KB |
| 実行使用メモリ | 31,484 KB |
| 最終ジャッジ日時 | 2026-01-11 17:21:08 |
| 合計ジャッジ時間 | 6,536 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 11 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(void) {
int N, T; cin >> N >> T;
vector<int> L(N), R(N);
vector<ll> P(N);
for (int i = 0; i < N; i++) {
cin >> L[i] >> R[i] >> P[i];
}
vector<vector<ll>> add(200009), rem(200009);
for (int i = 0;i < N;i++) {
add[L[i]].push_back(P[i]);
rem[R[i] + 1].push_back(P[i]);
}
multiset<ll> s;
vector<ll> mx;
for (int i = 0;i <= 200000;i++) {
for (auto v : add[i])s.insert(v);
if (s.empty())mx.push_back(0);
else mx.push_back(*s.rbegin());
for (ll v : rem[i]) {
auto it = s.find(v);
if (it != s.end())s.erase(it);
}
}
vector<ll> dp(400009, -(1LL << 60));
dp[0] = 0;
int rmx = *max_element(R.begin(), R.end());
for (int i = 0; i <= 200000; i++) {
if (i <= rmx)dp[i + T] = max(dp[i + T], dp[i] + mx[i]);
dp[i + 1] = max(dp[i + 1], dp[i]);
}
ll ans = *max_element(dp.begin(), dp.end());
cout << ans << "\n";
}