Advertisement
K_Y_M_bl_C

Untitled

Sep 14th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. const int INF = (int)1e9 + 7;
  2.  
  3. int solve()
  4. {
  5.     int m, n;
  6.     scanf("%d %d", &m, &n);
  7.     vector<int> a(n);
  8.     for (int i = 0; i < n; ++i)
  9.     {
  10.         scanf("%d", &a[i]);
  11.         --a[i];
  12.     }
  13.     sort(all(a));
  14.     vector<vi> dp(2, vi(m));
  15.     for (int i = 0; i < n; ++i)
  16.     {
  17.         dp[0][i] = abs(a[0] - i);
  18.     }
  19.     for (int i = 1; i < n; ++i)
  20.     {
  21.         int cmin = dp[0][0];
  22.         for (int j = 0; j < i; ++j)
  23.         {
  24.             dp[1][j] = INF;
  25.             cmin = min(cmin, dp[0][j]);
  26.         }
  27.         for (int j = i; j < m; ++j)
  28.         {
  29.             dp[1][j] = cmin + abs(a[i] - j);
  30.             cmin = min(cmin, dp[0][j]);
  31.         }
  32.         swap(dp[0], dp[1]);
  33.     }
  34.     int ans = dp[0][0];
  35.     for (int i = 0; i < m; ++i)
  36.         ans = min(ans, dp[0][i]);
  37.     printf("%d\n", ans);
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement