提出 #28442072
ソースコード 拡げる
/*
* Author: nskybytskyi
* Time: 2022-01-08 14:00:00
*/
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using mint = modint998244353;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n;
cin >> n;
vector<int> a(n);
for (auto& ai : a) {
cin >> ai;
}
vector<mint> dp(n + 1);
dp[0] = 1;
stack<pair<int, mint>> mn, mx;
mint mx_sum = 0, mn_sum = 0;
for (int i = 0; i < n; ++i) {
{ // max
mint sum = 0;
while (!mx.empty() && a[mx.top().first] <= a[i]) {
auto [j, dp_sum] = mx.top();
mx.pop();
mx_sum -= a[j] * dp_sum;
sum += dp_sum;
}
mx_sum += sum * a[i];
mx.emplace(i, sum + dp[i]);
}
{ // min
mint sum = 0;
while (!mn.empty() && a[mn.top().first] >= a[i]) {
auto [j, dp_sum] = mn.top();
mn.pop();
mn_sum -= a[j] * dp_sum;
sum += dp_sum;
}
mn_sum += sum * a[i];
mn.emplace(i, sum + dp[i]);
}
dp[i + 1] = mx_sum - mn_sum;
}
cout << dp[n].val() << "\n";
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | G - Divide a Sequence |
| ユーザ | nika_skybytska |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 600 |
| コード長 | 1161 Byte |
| 結果 | AC |
| 実行時間 | 49 ms |
| メモリ | 8268 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 600 / 600 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example0.txt, example1.txt, example2.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, example0.txt, example1.txt, example2.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 000.txt | AC | 49 ms | 5380 KiB |
| 001.txt | AC | 47 ms | 5556 KiB |
| 002.txt | AC | 45 ms | 5536 KiB |
| 003.txt | AC | 45 ms | 5504 KiB |
| 004.txt | AC | 49 ms | 5420 KiB |
| 005.txt | AC | 46 ms | 5484 KiB |
| 006.txt | AC | 47 ms | 5592 KiB |
| 007.txt | AC | 46 ms | 5500 KiB |
| 008.txt | AC | 2 ms | 3648 KiB |
| 009.txt | AC | 2 ms | 3628 KiB |
| 010.txt | AC | 44 ms | 5240 KiB |
| 011.txt | AC | 38 ms | 4912 KiB |
| 012.txt | AC | 15 ms | 3628 KiB |
| 013.txt | AC | 8 ms | 3764 KiB |
| 014.txt | AC | 20 ms | 3652 KiB |
| 015.txt | AC | 46 ms | 5536 KiB |
| 016.txt | AC | 46 ms | 5412 KiB |
| 017.txt | AC | 44 ms | 5532 KiB |
| 018.txt | AC | 46 ms | 5504 KiB |
| 019.txt | AC | 48 ms | 5556 KiB |
| 020.txt | AC | 44 ms | 6860 KiB |
| 021.txt | AC | 46 ms | 5380 KiB |
| 022.txt | AC | 41 ms | 8204 KiB |
| 023.txt | AC | 46 ms | 6872 KiB |
| 024.txt | AC | 45 ms | 6796 KiB |
| 025.txt | AC | 47 ms | 5484 KiB |
| 026.txt | AC | 45 ms | 8268 KiB |
| 027.txt | AC | 45 ms | 6856 KiB |
| 028.txt | AC | 47 ms | 6820 KiB |
| 029.txt | AC | 44 ms | 5504 KiB |
| 030.txt | AC | 46 ms | 7928 KiB |
| 031.txt | AC | 44 ms | 6868 KiB |
| example0.txt | AC | 3 ms | 3512 KiB |
| example1.txt | AC | 2 ms | 3584 KiB |
| example2.txt | AC | 2 ms | 3640 KiB |