Naxocist

bullshxt

Apr 29th, 2023 (edited)
1,176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 1e5 + 3;
  5. int dp[N][103], ar[N];
  6.  
  7. int main() {
  8.     int n, k;
  9.     scanf("%d%d", &n, &k);
  10.     for(int i=1; i<=n; ++i) scanf("%d", &ar[i]);
  11.  
  12.     for(int i=1; i<=k; ++i) {
  13.         if(ar[1] == i) dp[1][i] = 0;
  14.         else dp[1][i] = 1;
  15.     }
  16.  
  17.     for(int i=2; i<=n; ++i) {
  18.         for(int j=1; j<=k; ++j) {
  19.             if(j == 1) dp[i][j] = min(dp[i-1][2], dp[i-1][k]);
  20.             else if(j == k) dp[i][j] = min(dp[i-1][1], dp[i-1][k-1]);
  21.             else dp[i][j] = min(dp[i-1][j-1], dp[i-1][j+1]);
  22.  
  23.             dp[i][j] += (ar[i] == j ? 0 : 1);
  24.         }
  25.     }
  26.  
  27.     int mn = 1e9;
  28.     for(int i=1; i<=k; ++i) {
  29.         mn = min(mn, dp[n][i]);
  30.     }
  31.     printf("%d", mn);
  32.     return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment