Submission #1206580

#TimeUsernameProblemLanguageResultExecution timeMemory
1206580mopsyarkaRabbit Carrot (LMIO19_triusis)C++20
100 / 100
55 ms3688 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using ld = long double;

#define f first
#define s second

#define sz(x) (ll)(x.size())

#define vec vector
#define pb push_back
#define all(x) x.begin(), x.end()

#define debug(x) cerr << (#x) << " = " << (x) << endl

ll pw (int a) {
    return 1ll << a;
}

using pii = pair < int, int >;
using pll = pair < ll, ll >;

const int mod = 998244353;
const int N = 2e5 + 5;
const ll OO = 1e18;
const ld eps = 1e-10;

template<typename T>
bool umn (T &fi, T se) { return fi > se ? (fi = se, 1) : 0; }

template<typename T>
bool umx (T &fi, T se) { return fi < se ? (fi = se, 1) : 0; }

int a[N], dp[N];

int bit[N];

void update (int i, int x) {
    for (; i < N; i |= i + 1)
        umn(bit[i], x);
}

int get (int i) {
    int ans = N;
    for (; i >= 0; i = (i & (i + 1)) - 1)
        umn(ans, bit[i]);
    return ans;
}

void slv () {
//    freopen("cowjog.in", "r", stdin);
//    freopen("cowjog.out", "w", stdout);
    int n, m;
    cin >> n >> m;
    a[0] = 0;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];
    a[n + 1] = 0;
    dp[n + 1] = 0;

    vec < int > c;
    for (int i = 0; i <= n + 1; ++i) {
        c.push_back(a[i] - m * i);
    }
    sort(all(c));
    c.erase(unique(all(c)), c.end());
    for (int i = 0; i < N; ++i)
        bit[i] = N;
    update(0, n + 1);

    for (int i = n; i >= 0; --i) {
        dp[i] = n;
        int v = a[i] - m * i;
        int pp = lower_bound(all(c), v) - c.begin();
        dp[i] = get(pp) - i - 1;
        update(pp, dp[i] + i);

//        for (int j = i + 1; j <= n + 1; ++j) {
//            if (a[i] - m * i >= a[j] - m * j)
//                dp[i] = min(dp[i], dp[j] + j - i - 1);
//        }
    }
    cout << dp[0];
}

signed main () {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int test = 1;
//    cin >> test;
    while (test--) {
        slv();
        cout << "\n";
    }
}

///    Skyline Ryodan

///Да это же Midix!
///Trippy, cooking that shit up again

///Мой quinque это Desolator, да, я Сузуя Джузо
///Видел так много смертей близких, затупились все чувства
///Читаю словно на спидах, бля, я Ликаном покусан
///Какой паук тебе, пацан? Ты — человеческий мусор
///Я ебанутый на голову, скорость ударила в голову
///Будешь пиздеть — с корнями вырву твою голову
///В моей системе веет од, паук не знает слова «голод»
///Оставлю пару пулевых на теле, сука, мне не нужен повод

///Это Редан, здесь пауки, в Sky'е летим прямо в ад
///Если ты прыгнул в этот сквад, то точно нет пути назад
///Да твои парни — это крысы, будто Хилл Зодиак
///И моя клика вырубает вас за пару атак!

///Юзаю drug, я перебил стак, ты знаешь как мне похуй на luck
///На линзах мрак, нет, это не знак, я знаю: ты слаб, ты ёбаный раб
///Продал души, я бессмертен, кровью подписан контракт
///И под звуки Реквиема я танцую на костях!

///Всё, что держу в своих руках — это я сделал сам
///Я не нуждаюсь в представлении, Jinada скам
///Здесь пауки, мы поколение, со мной Редан
///Skyline узнает где ты, сука, нам не нужен скан (Ра)
///Пауков целая стая, психопаты за рулём
///За штурвал hikikomori, левый глаз залит огнём
///Весь салон пропитан болью и я роллю прямо в нём
///И под капотом триста двадцать, насладись последним днём, а

///Это mindset от Бога
///Моё дыхание грома
///Мои глаза видят пустых — это глаукома
///Это mindset от Бога-Бога
///Моё дыхание грома
///Мои гла—, мои гла— видят пустых, глаук—

///Проклятый ублюдок, на мне метка паука
///Двенадцать лап на моей шее, подо мной крови река
///Полный бак залитый в Sky'е, по мне плачут небеса
///Клеймо четвёрки на спине и труппа, скрытая в тенях

///Я ебанутый на голову, скорость ударила в голову
///Будешь пиздеть — с корнями вырву твою голову
///Я ебанутый на голову, скорость ударила в голову
///Будешь пиздеть — с корнями вырву твою голову
///Аллё, shadow-shadow, блядь, сук—, идите нахуй
///Отпустите меня домой, ха-ха-ха
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...