結果
問題 |
No.3265 地元に帰れば天才扱い!
|
ユーザー |
![]() |
提出日時 | 2025-09-13 17:56:26 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,002 ms / 2,500 ms |
コード長 | 1,727 bytes |
コンパイル時間 | 6,501 ms |
コンパイル使用メモリ | 475,088 KB |
実行使用メモリ | 11,904 KB |
最終ジャッジ日時 | 2025-09-13 17:57:02 |
合計ジャッジ時間 | 35,666 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> #include <boost/multiprecision/cpp_dec_float.hpp> #include <boost/multiprecision/cpp_int.hpp> namespace mp = boost::multiprecision; using Bint = mp::cpp_int; using namespace std; using namespace atcoder; #define rep(i, n) for(int i=0;i<(n);++i) #define rep1(i, n) for(int i=1;i<=(n);i++) #define ll long long using mint = modint998244353; using P = pair<ll,ll>; using lb = long double; using T = tuple<ll, ll, ll>; #ifdef LOCAL # include <debug_print.hpp> # define dbg(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else # define dbg(...) (static_cast<void>(0)) #endif int main() { int n, m; cin >> n >> m; vector<ll> a(n), l(n), r(n); rep(i,n) cin >> a[i] >> l[i] >> r[i]; rep(i,n) { --l[i]; } vector<int> id(n); rep(i,n) id[i] = i; fenwick_tree<ll> bit(m), cnt(m+2); rep(i,n) { bit.add(i, a[i]); } ll ans = 0; rep(i,n) { ans += a[i]*(r[i]-l[i])-bit.sum(l[i],r[i]); cnt.add(l[i], 1); cnt.add(r[i],-1); } dbg(ans); int q; cin >> q; while(q--) { int x, y, u, v; cin >> x >> y >> u >> v; --x; --y; --u; ans -= a[x]*(r[x]-l[x]) - bit.sum(l[x],r[x]); cnt.add(l[x],-1); cnt.add(r[x],1); ll c = cnt.sum(0, id[x]+1); dbg(c); ans += c*a[x]; bit.add(id[x], -a[x]); id[x] = y; l[x] = u; r[x] = v; bit.add(id[x], a[x]); c = cnt.sum(0, id[x]+1); ans -= c*a[x]; cnt.add(l[x],1); cnt.add(r[x],-1); ans += a[x]*(r[x]-l[x]) - bit.sum(l[x], r[x]); cout << ans << endl; } return 0; }