Submission #821626

#TimeUsernameProblemLanguageResultExecution timeMemory
821626Youssif_ElkadiRabbit Carrot (LMIO19_triusis)C++17
0 / 100
0 ms212 KiB
#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 5, M = 11, inf = 1e9 + 5, mod = 1e9 + 7;
pair<long long, long long> dp[N];
long long n, m;
long long arr[N];
int main()
{
    cin >> n >> m;
    dp[0] = {0, 0};
    long long mx = 0;
    for (long long i = 1; i <= n; i++)
        dp[i] = {-inf, 0};
    for (long long i = 1; i <= n; i++)
    {
        cin >> arr[i];
        long long l = 0, r = n, mid, ans = -1;
        while (l <= r)
        {
            mid = (l + r) / 2;
            if (dp[mid].first == -inf)
                r = mid - 1;
            else if (dp[mid].first + m * (i - dp[mid].second) >= arr[i])
                l = mid + 1, ans = max(ans, mid);
            else
                r = mid - 1;
        }
        if (ans != -1)
        {
            if (dp[ans + 1].first == -inf || dp[ans + 1].first + (i + 1) * m <= arr[i] + m)
            {
                mx = max(mx, ans + 1);
                dp[ans + 1].first = arr[i];
                dp[ans + 1].second = i;
            }
        }
    }
    cout << n - mx;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...