#include<iostream>
// #include<bits/stdc++.h>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
#define pb push_back
#define int long long
#define all(v) (v).begin() , (v).end()
using namespace std;
const int inf = 1e17 , N = 5e3 + 4;
signed main(){
ios_base::sync_with_stdio(0) , cin.tie(0);
int n , k ;
cin >> n >> k ;
int t[n+2];
vector<int>us(n + 2 , 0);
set<int>q;
for(int i= 1; i<= n ; i++){
cin >> t[i];
q.insert(i);
}
t[0] = -inf , t[n+1] = inf;
multiset<pair<int,int>>st;
for(int i= 1; i < n ; i++){
st.insert({t[i+1] - t[i] , i });
}
int len = n , cnt =0 ;
while(len > k && st.size() > 0 ){
int cost = st.begin()->first , i = st.begin()->second;
st.erase({cost , i });
// cout << i<< ' ' << cost << '\n';
if(us[i] && us[i+1]){
cnt+=cost-1;
len--;
}
else if(us[i] || us[i+1]){
cnt+=cost;
len--;
}
else {
cnt+=cost+1;
len--;
}
us[i] = us[i+1] = 1 ;
// k--;
}
for(int i= 1; i<= n; i++){
if(!us[i])cnt++;
}
cout << cnt ;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |