#include <bits/stdc++.h>
using namespace std;
#define debug(v) cerr<<#v" = "<<(v)<<"\n";
#define debugvec(v) do{cerr<<#v<<" = [";for(int i=0;i<v.size();i++)cerr<<v[i]<<(i==v.size()-1?"":", ");cerr<<"]\n";}while(0);
#define debugvecp(v) do{cerr<<#v<<" = [";for(int i=0;i<v.size();i++)cerr<<"[ "<<v[i].fst<<" "<<v[i].snd<<" ]"<<(i==v.size()-1?"":", ");cerr<<"]\n";}while(0);
#define fst first
#define snd second
#define gcd(x,y) __gcd(x,y)
#define OnlineJudge(s) freopen((s".in"),"r",stdin); freopen((s".out"),"w",stdout);
#define fastIO() cin.tie(0)->sync_with_stdio(0);cin.exceptions(cin.failbit);
#define boolsolve() cout<<(solve()?"Yes":"No");
using ll=long long;
using ull=unsigned long long;
using pll=pair<ll,ll>;
using vll=vector<ll>;
using vpll=vector<pll>;
using vvll=vector<vll>;
const ll INF=1e18;
const ll MOD=1e9+7;
const ll MAXN=1e6+1;
void solve(){
ll n, m, ans=0, a; multiset<ll> C;
cin >> n >> m;
vll A(n);
for(int i=1; i<=n; i++){
cin >> a;
A[i-1]=m*i-a;
}
for(int i=0; i<n; i++){
if(A[i]<0) continue;
if(C.upper_bound(A[i])==C.end()) ans++;
else C.erase(C.upper_bound(A[i]));
C.insert(A[i]);
}
cout << n-ans;
}
int main(){
fastIO();
//OnlineJudge("")
ll t=1;
//cin >> t;
while(t--){
solve();
//cout << "\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |