#include <bits/stdc++.h> #define REP(i, n) for (int i = 0; (i) < int(n); ++ (i)) using namespace std; template <typename T> vector<T> longest_weak_increasing_subsequence(vector<T> const & xs) { vector<T> l; // l[i] is the last element of the increasing subsequence whose length is i + 1 for (auto && x : xs) { auto it = upper_bound(l.begin(), l.end(), x); if (it == l.end()) { l.push_back(x); } else { *it = x; } } return l; } int main() { // input int n; cin >> n; vector<int> a(n); REP (i, n) cin >> a[i]; // solve vector<int> b; REP (i, n) { int b_i = a[i] - i; if (b_i >= 1) b.push_back(b_i); } int answer = n - longest_weak_increasing_subsequence(b).size(); // output cout << answer << endl; return 0; }