Submission #893486

#TimeUsernameProblemLanguageResultExecution timeMemory
893486vjudge1Road Construction (JOI21_road_construction)C++17
11 / 100
440 ms21132 KiB
#include <bits/stdc++.h>
#define int long long
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back
using namespace std;
signed main(){
    int n,k;
    cin>>n>>k;
    vector <int> x(n),y(n);
    for(int i=0;i<n;i++)cin>>x[i]>>y[i];
    if(n<=1000){
        vector <int> v;
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                v.pb(abs(x[i]-x[j])+abs(y[i]-y[j]));
            }
        }
        sort(all(v));
        
        for(int i=0;i<k;i++){
            cout<<v[i]<<"\n";
        }
        return 0;
    }
    
    multiset <pair <int,int> > ms;
    sort(all(x));
    for(int i=0;i<n-1;i++){
        ms.insert({abs(x[i]-x[i+1]),i+1});
    }
    for(int i=0;i<k;i++){
        int ind=ms.begin()->second;
        int val=ms.begin()->first;
        cout<<val<<"\n";
        ms.erase(ms.begin());
        if(ind<n-1){
            ms.insert({val+x[ind+1]-x[ind],ind+1});
        }
    }
     
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...