Submission #1171858

#TimeUsernameProblemLanguageResultExecution timeMemory
1171858ov113Rabbit Carrot (LMIO19_triusis)C++20
0 / 100
1 ms328 KiB
#include <iostream>
#include <stack>
#include <vector>
using namespace std;

int max_non_dec_subseq(const vector<int> &v) {
    int n = v.size();
    
    stack<int> s;
    int dp[n];

    for (int i=0; i<n; i++) {
        while (!s.empty() && v[s.top()] > v[i]) {
            s.pop();
        }
        if (s.empty()) {
            dp[i] = 1;
        }
        else {
            dp[i] = dp[s.top()] + 1;
        }
        s.push(i);
    }

    int ans = 0;
    for (int i=0; i<n; i++) {
        ans = max(ans, dp[i]);
    }
    return ans;
}

int main() {
    int n, m; cin >> n >> m;
    
    int a[n+1];
    a[0] = 0;
    for (int i=1; i<=n; i++) {
        cin >> a[i];
        a[i] -= i*m;
    }

    vector<int> poss_unchanged;
    for (int i=0; i<=n; i++) {
        if (a[i] <= 0) { poss_unchanged.push_back(-a[i]); }
    }

    cout << (n+1) - max_non_dec_subseq(poss_unchanged) << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...