結果
| 問題 | No.3597 Queen Score Attack 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-07-28 00:25:28 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.90.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,063 bytes |
| 記録 | |
| コンパイル時間 | 1,247 ms |
| コンパイル使用メモリ | 222,012 KB |
| 実行使用メモリ | 95,232 KB |
| 最終ジャッジ日時 | 2026-07-28 00:25:59 |
| 合計ジャッジ時間 | 27,553 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 TLE * 5 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
using ll = long long;
const int N = 2000010, MOD = 998244353, INF = 0x3f3f3f3f;
int n, m, w[N];
int q, x[N], y[N], c[N], sx, sy;
void solve() {
scanf("%d%d%d%d%d", &n, &m, &sx, &sy, &q);
for (int i = 1; i < q + 1; i++) scanf("%d%d%d", x + i, y + i, c + i);
map<int, ll> s[4];
s[0][sx] = s[1][sy] = s[2][sx - sy] = s[3][sx + sy] = 0;
ll res = 0, pv = -1e18;
for (int i = 1; i < q + 1; i++) {
ll v = pv;
if (s[0].count(x[i])) v = max(v, s[0][x[i]]);
if (s[1].count(y[i])) v = max(v, s[1][y[i]]);
if (s[2].count(x[i] - y[i])) v = max(v, s[2][x[i] - y[i]]);
if (s[3].count(x[i] + y[i])) v = max(v, s[3][x[i] + y[i]]);
pv = res;
if (v != -1e18) {
v += c[i];
res = max(res, v);
s[0][x[i]] = max(s[0][x[i]], v);
s[1][y[i]] = max(s[1][y[i]], v);
s[2][x[i] - y[i]] = max(s[2][x[i] - y[i]], v);
s[3][x[i] + y[i]] = max(s[3][x[i] + y[i]], v);
}
}
printf("%lld\n", res);
}
int main() {
int T = 1;
// scanf("%d", &T);
while (T--) solve();
return 0;
}