Submission #1134069

#TimeUsernameProblemLanguageResultExecution timeMemory
1134069alexddRabbit Carrot (LMIO19_triusis)C++20
63 / 100
1099 ms97792 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; for(int j=i-1;j>=0;j--) { if(a[j]-j*m >= a[i]-i*m) { dp[i] = min(dp[i], dp[j]-j); } }*/ 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...