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 <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
typedef long long ll;
#define all(x) begin(x), end(x)
#define sz(x) (int) x.size()
const int PRIME = 1e9 + 7;
// int main(){
//     ios_base::sync_with_stdio(0); cin.tie(0);
//     int n;
//     ll m;
//     cin >> n >> m;
    
//     vector<ll> alteredHeights(n);
//     for(int i = 0; i < n; i++){
//         ll h;
//         cin >> h;
//         alteredHeights[i] = m * (ll)(i+1) - h;
//     }
//     vector<ll> dp;
//     dp.push_back(LLONG_MIN);
//     for(int i = 0; i < n; i++){
//         if(alteredHeights[i] < 0){
//             continue;
//         }
//         int ind = upper_bound(dp.begin(), dp.end(), alteredHeights[i]) - dp.begin();
//         if(ind == sz(dp)){
//             dp.push_back(0);
//         }else{
//             dp[ind] = alteredHeights[i];
//         }
//     }
//     cout << n - dp.size() + 1 << '\n';
// }
// void add(ll x) {
//     int lo = upper_bound(all(bes), x) - begin(bes); 
//     if (lo == sz(bes)) bes.push_back(0);
//     bes[lo] = x;
// }
int N;
ll M;
int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> N >> M;
    vector<ll> a(N);
    for(int i = 0; i < N; i++){
        ll h;
        cin >> h;
        a[i] = M * (i+1) - h;
    }
    vector<ll> bes;
    bes.push_back(LLONG_MIN);
    // for(int i = 0; i < N; i++){
    //     a[i] = M * (i+1) - a[i];
    // }
    for(int el: a){
        if(el < 0){
            continue;
        }
        int lo = upper_bound(all(bes), el) - begin(bes); 
        if (lo == sz(bes)) bes.push_back(0);
        bes[lo] = el;
    }
    cout << N - sz(bes) + 1 << '\n';
}
| # | 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... |