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 "bubblesort2.h"
#include <bits/stdc++.h>
using namespace std;
int solve(const vector<int> &A) {
  const int N = A.size();
  vector<int> stk = {0};
  int best = 0;
  for (int i = 1; i < N; ++i) {
    if (A[i] > A[stk.back()]) {
      stk.push_back(i);
    } else if (A[i] < A[stk.back()]) {
      /*int st = 0, dr = (int)stk.size() - 2;
      while (st <= dr) {
        const int mid = (st + dr) / 2;
        if (A[i] < A[stk[mid]]) {
          dr = i - 1;
        } else {
          st = i + 1;
        }
      }
      best = max(best, i - stk[dr + 1]);*/
      int j = stk.size() - 1;
      while (j > 0 && A[i] < A[stk[j - 1]]) {
        --j;
      }
      best = max(best, i - stk[j]);
    }
  }
  return best;
}
vector<int> countScans(vector<int> A, vector<int> X, vector<int> V) {
  int Q = X.size();
  vector<int> answer(Q);
  for (int j = 0; j < Q; j++) {
    A[X[j]] = V[j];
    answer[j] = solve(A);
  }
  return answer;
}
| # | 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... |