제출 #823650

#제출 시각아이디문제언어결과실행 시간메모리
823650SoulKnightStove (JOI18_stove)C++17
100 / 100
34 ms4560 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long #define ln '\n' const int N = 1e5 + 5; const int LG = 20; const int INF = 2e9 + 5; const int MOD = 998244353; ll a[N]; priority_queue<pair<ll, ll>> pq; vector<int> vec; ll ans = 0LL; void solve(){ int n, k; cin >> n >> k; for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 1; i < n; i++){ pq.push({a[i] - a[i-1], i-1}); } vec.push_back(-1); int t = k; while (--t && !pq.empty()){ // cout << pq.top().first << ' ' << pq.top().second << ln; vec.push_back(pq.top().second); pq.pop(); } sort(vec.begin(), vec.end()); int x = vec.size(); // for (int i = 0; i < x; i++) cout << vec[i] << ' '; // cout << ln; for (int i = 1; i < x; i++){ // cout << a[vec[i]] << ' ' << a[vec[i-1]+1] << ln; ans += a[vec[i]]- a[vec[i-1]+1]; } ans += a[n-1] - a[vec[x-1]+1]; cout << ans + k << ln; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); // freopen("mooyomooyo.in", "r", stdin); // freopen("mooyomooyo.out", "w", stdout); // ll T; cin >> T; // while (T--){ // solve(); // } solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...