#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
const int maxn = 5e5 + 5;
int a[maxn], res[maxn], bit[maxn], ev[maxn][3];
vector<int> water, value[maxn];
void up(int x, int v){
    for (; x < maxn; x += x & -x) bit[x] += v;
}
int get(int x){
    int s = 0;
    for (; x > 0; x -= x & -x) s += bit[x];
    return s;
}
void add(int i, int v){
    if(ev[i][0] <= ev[i][1]){
        up(ev[i][0], (ev[i][2] * v));
        up(ev[i][1] + 1, -(ev[i][2] * v));
    }   
    else{
        up(1, (ev[i][2] * v));
        up(ev[i][1] + 1, -(ev[i][2] * v));
        up(ev[i][0], (ev[i][2] * v));
    }
}
int f(int x){
    int ans = 0;
    for(int id: value[x]){
        ans += get(id);
    }
    return ans;
}
void calc(int l, int r, vector<int>& cur){
    if(l > r || cur.empty()) return;
    cout << l << " " << r << "\n";
    int mid = (l + r) / 2;
    for(int i = l; i <= mid; i++) add(i, 1);
    vector<int> le, ri;
    for(int x: cur){
        int sum = f(x);
        if (sum >= a[x]){
            le.push_back(x);
            res[x] = mid;
        }else{
            ri.push_back(x);
            a[x] -= sum;
        }
    }
    for (int i = l; i <= mid; i++) add(i, -1);
    calc(l, mid, le);
    calc(mid + 1, r, ri);
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int n, m; cin >> n >> m;
    for(int i = 1; i <= m; i++){
        int x; cin >> x;
        value[x].push_back(i);
    }
    for(int i = 1; i <= n; i++){
        cin >> a[i];
        res[i] = -1;
        water.push_back(i);
    }
    int q; cin >> q;
    
    for(int i = 1; i <= q; i++) cin >> ev[i][0] >> ev[i][1] >> ev[i][2];
    
    calc(1, q, water);
    for(int i = 1; i <= n; i++){
        if(res[i] == -1) cout << "NIE\n";
        else cout << res[i] << '\n';
    }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |