Submission #1307837

#TimeUsernameProblemLanguageResultExecution timeMemory
1307837hades_85Rabbit Carrot (LMIO19_triusis)C++20
100 / 100
73 ms12896 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
#define int long long
const ll mo = 998244353;
const ll INF = 1e17;
const int N = 2e5 + 10;
int M = 1e3 + 10;

ll binExp(ll a, ll b , ll mo) {
    ll ans = 1;
    a %= mo;
    while (b) {
        if (b & 1) ans = ans * a % mo;
        a = a * a % mo;
        b >>= 1;
    }
    return ans;
}

// vector<vector<int>> div1(N);
vector<bool> isPrime(N,1);
vector<int> pr;
void sieve(){
    for (int i = 2; i < N ; ++i)
    {
        if(isPrime[i]){
            for(int j = 2*i ; j < N ; j+=i){
                isPrime[j] = 0;
            }
        }
    }
    for(int i = 2 ; i < N ; ++i){
        if(isPrime[i]){
            pr.push_back(i);
        }
    }
}

int ad(int a , int b){
    return (a+b)%mo;
}

int mul(int a ,int b){
    return (a*b)%mo;
}

vector<pair<int,int>> mov = {{1,0} , {0,-1}, {0,1} , {-1,0}};

bool isValid(int x , int y  , int n){
    return (x >= 0 && y>=0 && x < n && y<n);
}

void solve() {
   int n , m;
   cin>>n>>m;
   vector<int> v(n);
   for(int i  = 0 ; i < n ; i++){
    cin>>v[i];
   }

   vector<int> b;
   for(int i = 1 ; i <= n; i++){
        if(m*i >= v[i-1])
            b.push_back(m*i - v[i-1]);
   }
   multiset<int> s;
   int ans = n;
   for(auto &t: b){
        if(s.upper_bound(t) == s.end()) ans--;
        else s.erase(s.upper_bound(t));
        s.insert(t);
   }    
   cout<<ans<<endl;
   

}

signed main() {
    // freopen("cowjog.in", "r", stdin); 
    // freopen("cowjog.out", "w", stdout); 


    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    // cin >> t;
    // sieve();
    // help();
    int ct = 1;
    while (t--) {
        // cout<<"Case #"<<(ct++)<<": ";
        solve();
    }
    return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...