This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#define int long long
const int N = 1000 * 1000 + 3;
int par[N], sz[N];
int ans = 0;
bool u[N];
int cnt(int v) { return (v * (v + 1)) / 2; }
void init(int n) {
    for(int i = 0; i <= n + 1; i++) par[i] = i, sz[i] = 1;
}
int fin(int v) { return par[v] == v ? v : par[v] = fin(par[v]); }
void join(int a, int b) {
    if(!u[a] || !u[b]) return;
    a = fin(a); b = fin(b);
    //if(a == b) return;
    ans -= cnt(sz[a]);
    ans -= cnt(sz[b]);
    if(sz[a] < sz[b]) swap(a, b);
    sz[a] += sz[b];
    par[b] = a;
    ans += cnt(sz[a]);
}
void unite(int v) {
    u[v] = 1;
    ans += cnt(sz[v]);
    join(v, v + 1);
    join(v, v - 1);
}
signed main() {
    std::ios::sync_with_stdio(0);
    std::cout.tie(0);
    std::cin.tie(0);
    int n, q;
    cin >> n >> q;
    init(n);
    vector<array<int, 2>> a(n), h(q);
    for(int i = 0; i < n; i++) cin >> a[i][0], a[i][1] = i + 1;
    for(int i = 0; i < q; i++) cin >> h[i][0], h[i][1] = i;
    sort(h.begin(), h.end());
    sort(a.begin(), a.end());
    vector<int> id(q);
    int j = 0;
    for(int i = 0; i < q; i++) {
        while(j < n && a[j][0] <= h[i][0]) {
            unite(a[j][1]);
            j++;
        }
        id[h[i][1]] = ans;
    }
    for(int i = 0; i < q; i++) cout << id[i] << '\n';
    return 0;
}
| # | 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... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |