제출 #1275618

#제출 시각아이디문제언어결과실행 시간메모리
1275618RufatStove (JOI18_stove)C++20
20 / 100
1097 ms24012 KiB
//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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...