Submission

Status:
PP------------------

Score: 10

User: Winzzwz

Problemset: ผลบวก (ยาก)

Language: cpp

Time: 0.010 second

Submitted On: 2025-03-05 12:05:54

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int n,q,t,tt[100100],dp[100100];
vector <pair<int,int>> dp2;
map <int,bool> check;

int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> tt[i];
        dp[i] = tt[i] + dp[i-1];
    }
    cin >> q;
    while (q--) {
        cin >> t;
        while (t--) {
            int i,j; cin >> i >> j;
            i++;
            if (check[i]) {
                for (int k = 0; k < dp2.size(); k++) {
                    if (dp2[k].first == i) {
                        dp2.erase(dp2.begin() + k);
                        break;
                    }
                }
            }
            dp2.push_back({i,j-tt[i]});
            check[i] = true;
        }
        int s,e; cin >> s >> e;
        s++;e++;
        int sum = dp[e] - dp[s-1];
        for (int i = 0; i < dp2.size(); i++) {
            if (dp2[i].first >= s && dp2[i].first <= e) {
                sum += dp2[i].second;
            }
        }
        cout << sum << '\n';
    }

    return 0;
}