#include using namespace std; const int Y_MAX = 10000; int min_compare(int x,int y){ if(x> N; vector Y(N+1); for(int i=1;i<=N;i++){ cin >> Y[i]; } vector> dp(N+1,vector(Y_MAX+1)); for(int i=0;i<=Y_MAX;i++){ dp[1][i] = abs(Y[1]-i); } int min; for(int n=2;n<=N;n++){ for(int y=0;y<=Y_MAX;y++){ //dp[n][y]求めるよ if(y == 0){ dp[n][y] = dp[n-1][0]+Y[n]; } else if(y <= Y[n]){ dp[n][y] = min_compare(dp[n][y-1],dp[n-1][y]+abs(Y[n]-y+1)) -1; } else { dp[n][y] = min_compare(dp[n][y-1],dp[n-1][y]+abs(Y[n]-y+1)) +1; } } } int min_result = 998244353; for(int y=0;y<=Y_MAX;y++){ if(min_result > dp[N][y]){ min_result = dp[N][y]; } } cout << min_result << endl; }