#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int INF = INT_MAX / 2; int longestIncreasingSubsequence(const vector& a) { int n = a.size(); vector dp(n, INT_MAX); for(int i=0; i::iterator it = upper_bound(dp.begin(), dp.end(), a[i]); *it = a[i]; } return lower_bound(dp.begin(), dp.end(), INT_MAX) - dp.begin(); } int main() { int n; cin >> n; vector a(n); for(int i=0; i> a[i]; a[i] -= i; if(a[i] <= 0) a[i] = -INF - i; } int ans = n - longestIncreasingSubsequence(a); cout << ans << endl; return 0; }