Submission #1134073

#TimeUsernameProblemLanguageResultExecution timeMemory
1134073alexddRabbit Carrot (LMIO19_triusis)C++20
100 / 100
613 ms90412 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int INF = 1e10; int n,m; int a[200005],dp[200005]; unordered_map<int,int> aib; int maxval=3*INF; int qry(int poz) { poz+=INF; int aux=INF; for(int i=poz;i<=maxval;i+=(i&(-i))) aux=min(aux,aib[i]); return aux+INF; } void upd(int poz, int newv) { poz+=INF; newv-=INF; for(int i=poz;i>0;i-=(i&(-i))) aib[i]=min(aib[i],newv); } signed main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; n++; a[n]=0; upd(0,0); for(int i=1;i<=n;i++) { dp[i]=INF; if(a[i]-i*m > 0) continue; dp[i] = qry(a[i]-i*m); dp[i]+=i-1; upd(a[i]-i*m, dp[i]-i); } cout<<dp[n]; 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...