結果
| 問題 |
No.3265 地元に帰れば天才扱い!
|
| コンテスト | |
| ユーザー |
kazuppa
|
| 提出日時 | 2025-08-09 11:19:22 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
RE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,499 bytes |
| コンパイル時間 | 4,416 ms |
| コンパイル使用メモリ | 253,960 KB |
| 実行使用メモリ | 8,320 KB |
| 最終ジャッジ日時 | 2025-09-06 12:31:36 |
| 合計ジャッジ時間 | 11,444 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 1 RE * 3 |
| other | RE * 21 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
template <typename T>
struct Lazy_BIT {
int n;
vector<T> bit[2];
Lazy_BIT(int n_) { init(n_); }
void init(int n_) {
n = n_ + 1;
for (int p = 0; p < 2; p++) bit[p].assign(n, 0);
}
void add_sub(int p, int i, T x) {
for (int idx = i; idx < n; idx += (idx & -idx)) {
bit[p][idx] += x;
}
}
void add(int l, int r, T x) { // [l,r) に加算
add_sub(0, l, -x * (l - 1));
add_sub(0, r, x * (r - 1));
add_sub(1, l, x);
add_sub(1, r, -x);
}
T sum_sub(int p, int i) {
T s(0);
for (int idx = i; idx > 0; idx -= (idx & -idx)) {
s += bit[p][idx];
}
return s;
}
T sum(int i) { return sum_sub(0, i) + sum_sub(1, i) * i; }
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<ll> a(n + 1);
for (int i = 1; i <= n; i++) cin >> a[i];
fenwick_tree<ll> b1(n + 1);
Lazy_BIT<int> b2(n);
for (int i = 1; i <= n; i++) b1.add(i, a[i]);
int q;
cin >> q;
ll ans = 0;
while (q--) {
int x, l, r;
ll y;
cin >> x >> y >> l >> r;
ans += b1.sum(l, r + 1);
b2.add(l, r + 1, 1);
ans += (y - a[x]) * (b2.sum(x) - b2.sum(x - 1));
b1.add(x, y - a[x]);
a[x] = y;
cout << ans << '\n';
}
}
kazuppa