This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
using namespace std;
typedef long long ll;
struct val{
int cost;
ll height;
};
int const INF = 2e9+7;
int const NMAX = 2e5;
val dp[1 + NMAX];
int main() {
ll n, m, c;
cin >> n >> m;
for(ll i = 1;i <= n;i++){
cin >> c;
dp[i].cost = INF;
for(ll j = 0;j < i;j++){
if(dp[j].height + m * (i - j) >= c){
if(dp[i].cost == dp[j].cost + (i - j - 1)){
dp[i].height = c;
}else if(dp[i].cost > dp[j].cost + (i - j - 1)){
dp[i].cost = dp[j].cost + (i - j - 1);
dp[i].height = c;
}
}
}
if(dp[i].cost > dp[i-1].cost + 1){
dp[i].cost = dp[i-1].cost + 1;
dp[i].height = dp[i-1].height + m;
}
}
cout << dp[n].cost;
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... |