제출 #1345305

#제출 시각아이디문제언어결과실행 시간메모리
1345305mydknStove (JOI18_stove)C++17
100 / 100
18 ms1612 KiB
#include <bits/stdc++.h>

using namespace std;

#define pii pair<int, int>
#define F first
#define S second

const int maxn = 1e5 + 5;

int n, k;
int arr[maxn];
bool fg[maxn];
int s[maxn];
int pa[maxn];
int res;

bool comp(const int &a, const int &b){
	return arr[a+1] - arr[a] < arr[b+1] - arr[b];
}

int findset(int u){
	if(pa[u] == u) return u;
	return pa[u] = findset(pa[u]);
}

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
	cin >> n >> k;
	for(int i=0;i<n;++i){
		cin >> arr[i];
		s[i] = i;
		pa[i] = i;
	}
	sort(s, s+n-1, comp);
	for(int i=0;i<n-k;++i){
		int u = findset(s[i]), v = findset(s[i] + 1);
		pa[v] = u;
		res += (arr[s[i] + 1] - arr[s[i]]);
	}
	for(int i=0;i<n;++i){
		int u = findset(i);
		if(!fg[u]){
			fg[u] = 1;
			++res;
		}
	}
	cout << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...