結果
| 問題 |
No.3328 岩井ツリーグラフ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-03 22:40:20 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 86 ms / 2,000 ms |
| コード長 | 1,181 bytes |
| コンパイル時間 | 3,164 ms |
| コンパイル使用メモリ | 285,316 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-11-03 22:40:26 |
| 合計ジャッジ時間 | 6,484 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/fenwicktree.hpp>
#include <atcoder/segtree.hpp>
#include <atcoder/modint.hpp>
#include <atcoder/dsu.hpp>
#include <atcoder/lazysegtree.hpp>
using namespace atcoder;
using namespace std;
using ll = long long;
using ull = unsigned long long;
template <class T>
using max_heap = priority_queue<T>;
template <class T>
using min_heap = priority_queue<T, vector<T>, greater<>>;
ll ll_min = numeric_limits<ll>::min();
ll ll_max = numeric_limits<ll>::max();
ll ALPHABET_N = 26;
using mint = modint998244353;
#define rep(i, n) for (ll i = (ll)0; i < (ll)n; i++)
#define rep_(i, k, n) for (ll i = (ll)k; i < (ll)n; i++)
#define all(a) a.begin(), a.end()
mint arith(ll n)
{
return mint(n) * mint(n + 1) / 2;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n;
cin >> n;
vector<ll> Y(n);
vector<mint> Y_(n);
rep(i, n)
{
cin >> Y[i];
Y_[i] = arith(Y[i]);
}
mint ans = 0;
mint sm = accumulate(all(Y_), mint(0));
rep(i, n)
{
ll y = Y[i];
// betu
ans += (sm - Y_[i]) * y;
// zero
ans += Y_[i];
// naka
mint my = Y[i];
ans += (my - 1) * my * (my + 1) / 6;
}
cout << (ans).val() << endl;
return 0;
}