Submission #330098

#TimeUsernameProblemLanguageResultExecution timeMemory
330098alien_loverRabbit Carrot (LMIO19_triusis)C++14
100 / 100
36 ms4204 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

typedef long long ll;

#define all(x) begin(x), end(x)
#define sz(x) (int) x.size()

const int PRIME = 1e9 + 7;


// int main(){
//     ios_base::sync_with_stdio(0); cin.tie(0);

//     int n;
//     ll m;
//     cin >> n >> m;
    
//     vector<ll> alteredHeights(n);

//     for(int i = 0; i < n; i++){
//         ll h;
//         cin >> h;
//         alteredHeights[i] = m * (ll)(i+1) - h;
//     }

//     vector<ll> dp;
//     dp.push_back(LLONG_MIN);

//     for(int i = 0; i < n; i++){
//         if(alteredHeights[i] < 0){
//             continue;
//         }
//         int ind = upper_bound(dp.begin(), dp.end(), alteredHeights[i]) - dp.begin();
//         if(ind == sz(dp)){
//             dp.push_back(0);
//         }else{
//             dp[ind] = alteredHeights[i];
//         }
//     }

//     cout << n - dp.size() + 1 << '\n';
// }

vector<ll> bes = {LLONG_MIN};

void add(ll x) {
    int lo = upper_bound(all(bes), x) - begin(bes); 
    if (lo == sz(bes)) bes.push_back(0);
    bes[lo] = x;
}

int N;
ll M;

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> N >> M;
    vector<ll> a(N);
    for(int i = 0; i < N; i++){
        ll h;
        cin >> h;
        a[i] = M * (i+1) - h;
    }
    // for(int i = 0; i < N; i++){
    //     a[i] = M * (i+1) - a[i];
    // }
    for(int el: a){
        if(el >= 0){
            add(el);
        }
    }
    cout << N - sz(bes) + 1 << '\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...