結果
問題 | No.2229 Treasure Searching Rod (Hard) |
ユーザー |
![]() |
提出日時 | 2023-02-24 22:08:19 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 75 ms / 2,000 ms |
コード長 | 927 bytes |
コンパイル時間 | 2,118 ms |
コンパイル使用メモリ | 195,616 KB |
最終ジャッジ日時 | 2025-02-10 21:13:10 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
#include<bits/stdc++.h>using namespace std;#define INF 1234567890#define ll long long#define MOD 998244353ll res = 0;int N, M, K;int main(){ios::sync_with_stdio(0); cin.tie(0);cin.exceptions(ios::badbit | ios::failbit);cin >> N >> M >> K;vector<array<int, 3> > v;vector<pair<int, int> > q;for(int i=0; i<K; i++){int y, x, val;cin >> y >> x >> val;ll cnt = y-1, L = x, R = x;ll sum = 1;// case 1if (cnt > 0){ll k = min({cnt, L-1, M-R});sum += ((k+1)*(k+1) - 1), sum %= MOD;cnt -= k;L -= k;R += k;}// case 2if (cnt > 0 && (L-1 > 0 || M-R > 0)){ll k = min({cnt, (L-1 > 0 ? L-1 : INF), (M-R > 0 ? M-R : INF)});sum += ((R-L+1)*k + k*(k+1)/2), sum %= MOD;cnt -= k;}// case 3if (cnt > 0){sum += cnt*M, sum %= MOD;}res += sum * val, res %= MOD;}res %= MOD; res += MOD; res %= MOD;cout << res << "\n";return 0;}