제출 #1359141

#제출 시각아이디문제언어결과실행 시간메모리
1359141coco2311Stove (JOI18_stove)C++17
0 / 100
0 ms344 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int par[100000];

int ancest(int n){
    if(par[n]==n)return n;
    par[n]=ancest(par[n]);
    return par[n];
}

signed main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int N,K;cin>>N>>K;
    int t[N],par[N],fuel[N];
    vector<pair<int,int>> dist;
    for(int i=0;i<N;i++){
        cin>>t[i];
        par[i]=i;
        fuel[i]=1;
        if(i>0){
            dist.push_back({t[i]-t[i-1]-1,i});
        }
    }
    sort(dist.begin(),dist.end());
    for(int i=0;i<N-K;i++){
        int a=dist[i].second-1,b=dist[i].second,c=dist[i].first;
        ancest(a);ancest(b);
        par[par[a]]=par[b];
        fuel[par[b]]+=fuel[par[a]]+c;
    }
    int s=0;
    for(int i=0;i<N;i++){
        if(par[i]==i){
            s+=fuel[i];
        }
    }
    cout<<s;
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…