Submission #574584

#TimeUsernameProblemLanguageResultExecution timeMemory
574584beabossRabbit Carrot (LMIO19_triusis)C++14
100 / 100
84 ms4908 KiB
#include <bits/stdc++.h>

using namespace std;


typedef long long ll;

ll mod = 1000000007;


int main() {
	ll n, m;
	cin >> n >> m;

	vector<ll> vals(n);

	for (ll i = 1; i <= n; i++) {
		int d;
		cin >> d;

		vals[i - 1] = m * i - d;
	}

	vector<int> dp;
	int lis = 0;

	if (vals[0] >= 0) {
		lis++;
		dp.push_back(vals[0]);
	}
    for (ll i = 1; i < n; i++) {
    	if (vals[i] < 0) continue;

    	if (upper_bound(dp.begin(), dp.end(), vals[i]) == dp.end()) {
    		lis++;
    		dp.push_back(vals[i]);

    	} else {
    		dp[upper_bound(dp.begin(), dp.end(), vals[i]) - dp.begin()] = vals[i];
    	}


    	
    	// if (m * (i + 1) < vals[i]) continue;

    	// ll best = -1;
    	// ll best_s = 0;

    	// for (ll j = 0; j < i; j++) {
    	// 	if (vals[i] > vals[j] + m * (i - j)) continue;
    	// 	if (dp[j + 1] >= best_s) {
    	// 		best_s = dp[j + 1];
    	// 		best = j;
    	// 	}
    	// }

    	// dp[i + 1] = 1 + dp[best + 1];
        
        
		
    }


    cout << n - lis << 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...