Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- using namespace std;
- #define FOR(i,m,n) for(int i = (m); i < (n); i++)
- #define ROF(i,m,n) for(int i = (n)-1; i >= (m); i--)
- typedef long long LL;
- typedef unsigned long long ULL;
- typedef vector<int> VI;
- typedef vector<LL> VLL;
- #define SZ(x) ((int)(x).size())
- #define MP make_pair
- typedef pair<int,int> PII;
- typedef pair<LL,LL> PLL;
- #define A first
- #define B second
- const int N = 2005;
- const int D = 21;
- int n, d;
- int p[N], a[N];
- int dp[N][D];
- inline int cost(int i, int j) {
- int sum = p[j];
- if (i > 0) {
- sum -= p[i - 1];
- }
- int d = sum % 10;
- if (d >= 5) {
- return sum += (10 - d);
- } else {
- return sum - d;
- }
- }
- int main() {
- freopen ("inp.in", "r", stdin);
- ios :: sync_with_stdio(false);
- cin >> n >> d;
- for (int i = 1; i <= n; i++) {
- cin >> a[i];
- p[i] = p[i - 1] + a[i];
- }
- for (int i = 0; i <= n; i++) {
- dp[i][0] = cost(0, i);
- }
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= d; j++) {
- dp[i][j] = 1e9;
- for (int k = 1; k < i; k++) {
- dp[i][j] = min(dp[i][j], dp[k][j - 1] + cost(k + 1, i));
- }
- }
- }
- cout << dp[n][d] << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement