이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const long long MAXN = 100010;
long long arr[MAXN];
long long dp[MAXN];
long long n,m,k;
long long rec(long long x,long long y,long long z){
if(x>=n){
return 0;
}
if(dp[x]<1000000000){
return dp[x];
}
long long maxo = arr[x];
long long mino = arr[x];
long long ans = 1000000000;
for(long long i=x;i<min(n,x+y);i++){
//long long incto = i+x;
maxo = max(maxo,arr[i]);
mino = min(mino,arr[i]);
long long diff = maxo-mino;
long long cost = z+(i-x+1)*diff;
long long final = cost + rec(i+1,y,z);
ans = min(final,ans);
}
return dp[x] = ans;
}
int main() {
cin>>n>>m>>k;
for(long long i=0;i<n;i++){
cin>>arr[i];
dp[i] = 1000000000;
}
cout<<rec(0,m,k)<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |