Submission #1108376

#TimeUsernameProblemLanguageResultExecution timeMemory
1108376ndanRabbit Carrot (LMIO19_triusis)C++14
100 / 100
30 ms6224 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define file "test"
#define forr(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i)
#define ford(i, b, a) for (int i = (b), _a = (a); i >= _a; --i)
#define forf(i, a, b) for (int i = (a), _b = (b); i < _b; ++i)
#define rep(i, n) for (int i = 0, _n = (n); i < _n; ++i)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define MASK(i) (1LL << (i))
const int maxn = 2e5 + 10;
const int MOD = 1e9 + 7;
const ll inf = 1e18;
const int oo = 1e9 + 7;
const float eps = 1e-6;

int n, m, ans = 0, p[maxn], idx = 0;
ll a[maxn], dp[maxn];
vector<ll> v;

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    #ifndef ONLINE_JUDGE
        // freopen(file".inp", "r", stdin);
        // freopen(file".out", "w", stdout);
    #endif
    cin >> n >> m;
    forr(i, 0, n - 1)
        cin >> p[i];
    dp[0] = 0;
    forr(i, 1, n)
        dp[i] = inf;
    forr(i, 1, n)
        if (i * m >= p[i - 1])
            a[++idx] = m * i - p[i - 1];
    forr(i, 1, idx) {
        int pos = upper_bound(dp, dp + n, a[i]) - dp;
        dp[pos] = a[i];
        ans = max(ans, pos);
    }
    cout << n - ans;
    return 0;
}

/*
      /⌒ ヽ
   /° ω° \
 _ノ ヽ ノ \_
‘/  / ⌒Y⌒ Y  ヽ
(  (三ヽ人  /  |
|  ノ⌒\  ̄ ̄ヽ ノ
ヽ___>、__/
   |( 王 ノ〈
   /ミ`ー―彡ヽ
  / ヽ/  |.
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...