이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
#define fi first
#define se second
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int N, Q;
  cin >> N >> Q;
  vector<pair<int, int>> H(N);
  for (int i = 0; i < N; i++) {
    cin >> H[i].fi;
    H[i].se = i;
  }
  sort(H.begin(), H.end());
  vector<bool> vis(N);
  vector<int> par(N), left(N), right(N);
  iota(par.begin(), par.end(), 0);
  iota(left.begin(), left.end(), 0);
  iota(right.begin(), right.end(), 1);
  function<ll(int)> way = [&](int v) {
    return 1ll * (right[v] - left[v]) * (right[v] - left[v] + 1) / 2;
  };
  function<int(int)> find = [&](int v) {
    return v == par[v] ? v : (par[v] = find(par[v]));
  };
  function<ll(int, int)> merge = [&](int a, int b) {
    a = find(a), b = find(b);
    ll r = way(a) + way(b);
    par[a] = b;
    left[b] = left[a];
    return way(b) - r;
  };
  ll sum = 0;
  map<int, ll> res;
  for (auto [h, x] : H) {
    vis[x] = true;
    if (x > 0 && vis[x - 1]) {
      sum += merge(x - 1, x);
    }
    if (x + 1 < N && vis[x + 1]) {
      sum += merge(x, x + 1);
    }
    res[h] = sum += 1;
  }
  for (int i = 0; i < Q; i++) {
    int Y;
    cin >> Y;
    auto it = res.upper_bound(Y);
    cout << (it == res.begin() ? 0ll : prev(it)->se) << '\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... |