#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define REP(i,s,n) for(int i=(int)(s);i<(int)(n);i++) using namespace std; typedef long long int ll; typedef vector VI; typedef vector VL; typedef pair PI; int dp[200010]; int main(void) { int n; cin >> n; VL a(n); REP(i, 0, n) { cin >> a[i]; a[i] -= i + 1; } // Coord compression map tbl; vector inv_tbl; { set vals; vals.insert(0); REP(i, 0, n) { if (a[i] >= 0) { vals.insert(a[i]); } } inv_tbl = vector(vals.begin(), vals.end()); sort(inv_tbl.begin(), inv_tbl.end()); REP(i, 0, inv_tbl.size()) { tbl[inv_tbl[i]] = i; } } int m = tbl.size(); REP(i, 0, n) { if (tbl.count(a[i])) { int idx = tbl[a[i]]; dp[idx] += 1; REP(j, idx + 1, m) { if (dp[j] >= dp[j - 1]) { break; } dp[j] = dp[j - 1]; } } } cout << n - dp[m - 1] << endl; }