Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int INF = (int)1e9 + 7;
- int solve()
- {
- int m, n;
- scanf("%d %d", &m, &n);
- vector<int> a(n);
- for (int i = 0; i < n; ++i)
- {
- scanf("%d", &a[i]);
- --a[i];
- }
- sort(all(a));
- vector<vi> dp(2, vi(m));
- for (int i = 0; i < n; ++i)
- {
- dp[0][i] = abs(a[0] - i);
- }
- for (int i = 1; i < n; ++i)
- {
- int cmin = dp[0][0];
- for (int j = 0; j < i; ++j)
- {
- dp[1][j] = INF;
- cmin = min(cmin, dp[0][j]);
- }
- for (int j = i; j < m; ++j)
- {
- dp[1][j] = cmin + abs(a[i] - j);
- cmin = min(cmin, dp[0][j]);
- }
- swap(dp[0], dp[1]);
- }
- int ans = dp[0][0];
- for (int i = 0; i < m; ++i)
- ans = min(ans, dp[0][i]);
- printf("%d\n", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement