제출 #1042270

#제출 시각아이디문제언어결과실행 시간메모리
1042270IdanRosenRabbit Carrot (LMIO19_triusis)C++98
0 / 100
1 ms452 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef long double ld;

int min_cost(vector<ll> arr, ll k) {
    ll n = arr.size();
//    for (ll i = 0; i < n; i++) arr[i] -= k * i;

    // find the length of the longest decreasing subsequence
    vector<ll> dp(n, -1);
    ll lis = 0;

    for (ll i = 0; i < n; i++) {
        ll start = 0;
        ll end = lis;
        while (start < end) {
            ll mid = start + (end - start) / 2;

            if (arr[dp[mid]] + k >= arr[i]) start = mid + 1;
            else end = mid;
        }

        if (start != 0 || i == 0) {
            dp[start] = i;
            if (start == lis) ++lis;
        }
    }

    return n - lis;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    ll n, m;
    cin >> n >> m;

    vector<ll> arr;
    arr.push_back(0);
    for (ll i = 0; i < n; i++) {
        ll val;
        cin >> val;
        arr.push_back(val);
    }

    cout << min_cost(arr, m);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...