Submission #1237832

#TimeUsernameProblemLanguageResultExecution timeMemory
1237832warlockRabbit Carrot (LMIO19_triusis)C++17
100 / 100
17 ms5052 KiB
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace __gnu_pbds;
using namespace std;

#define ll long long
#define int long long int
#define pii pair<int,int>
#define vi vector<int>
#define vvi vector<vector<int>>
#define all(x) begin(x),end(x)
#define rev(x) rbegin(x),rend(x)
#define min_priority_queue(x) priority_queue<x, vector<x>,greater<x>>
const int MOD = 1000000007;
const int INF = 1e18;

typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

void arrin(vi&x,int n){ for(int i=0;i<n;i++){cin >> x[i];}}
void arrout(vi&x){ for(int i=0;i<x.size();i++){cout<< x[i]<<" ";}cout<< endl;}
void pr_bool(bool i){ cout << (i ? "YES" : "NO") << endl;}

int gcd(int a,int b){ if(b==0) return a; return gcd(b, a%b);}
int lcm(int a,int b){ return a/gcd(a,b)*b;}

int solve(vi&tmp){
    vi dp;
    for(int i = 0;i < tmp.size();i++){
        int ind = upper_bound(all(dp),tmp[i]) - begin(dp);
        if(ind == dp.size()) dp.push_back(tmp[i]);
        else{
            dp[ind] = tmp[i];
        }
    }
    return dp.size();
}
int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    int N,M;
    cin >> N >> M;
    vi tmp;
    for(int i = 0;i < N;i++){
        int t; cin >> t;
        if((i+1)*M >= t) tmp.push_back((i+1)*M - t);
    }
    cout << N - solve(tmp) << endl;
}
// 02:17:58
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...