//Author RufatM
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<ll> vll;
typedef vector<pii> vpii;
typedef vector<vector<pii>> vvp;
typedef vector<bool> vb;
typedef vector<string> vs;
#define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl '\n'
#define pb push_back
#define pf push_front
#define eb emplace_back
#define ff first
#define ss second
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)
#define mt19937_64 mt_rand(chrono::steady_clock::now().time_since_epoch().count())
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
template<typename T> bool isPrime(T n) { if (n <= 1)return false;if (n <= 3)return true;if (n % 2 == 0 || n % 3 == 0)return false;for (T i = 5;i * i <= n;i += 6)if (n % i == 0 || n % (i + 2) == 0)return false;return true; }
const int MOD = 998244353;
const int INF = 1e9 + 7;
const ll LINF = 1e18 + 7;
const int LOG = 21;
const int MAXN = 107;
signed main(){
fastio;
int t=1;
//cin >> t;
while(t--){
int n,k;
cin >> n >> k;
vll a(n+1);
for(int i=1;i<=n;i++){
cin >> a[i];
}
vector<vector<ll>> dp(n+1,vll(k+1,LINF));
dp[0][0] = 0;
for(int i=1;i<=n;i++){
for(int used=1;used<=k;used++){
for(int p=0;p<i;p++){
ll cost = (a[i]+1)-a[p+1];
dp[i][used] = min(dp[i][used],dp[p][used-1]+cost);
}
}
}
ll ans = LINF;
for(int used=1;used<=k;used++){
ans = min(ans,dp[n][used]);
}
cout << ans << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |