Submission #944952

#TimeUsernameProblemLanguageResultExecution timeMemory
944952imannRabbit Carrot (LMIO19_triusis)C++17
100 / 100
69 ms5716 KiB
#include <iostream>
#include <array>
#include <algorithm>
#include <limits>

using ll = long long;

const int MAX_N = 2*1000*100 + 3;

std::array<ll, MAX_N> As, dp;

int solve(int n) {
  std::reverse(As.begin(), As.begin() + n);

  dp.fill(std::numeric_limits<ll>::max());
  for (int i = 0; i < n; ++i) {
    if (As[i] <= 0) {
      int j = std::upper_bound(dp.begin(), dp.begin() + n, As[i]) - dp.begin();
      dp[j] = As[i];
    }
  }

  int ans = 0;
  for (int i = 0; i < n; ++i) {
    if (dp[i] != std::numeric_limits<ll>::max())
      ans = i + 1;
  }
  return ans;
}

int main() {
  int n, m; std::cin >> n >> m;
  for (int i = 0; i < n; ++i) {
    std::cin >> As[i];
    As[i] -= (i + 1) * m;
  }
  std::cout << n - solve(n) << std::endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...