제출 #413623

#제출 시각아이디문제언어결과실행 시간메모리
413623Ronin13Road Construction (JOI21_road_construction)C++14
5 / 100
10108 ms357176 KiB
#include<bits/stdc++.h>
#define ll long long
#define f first
#define s second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define ull unsigned ll
#define pb push_back
#define epb emplace_back
using namespace std;

struct Point{
    ll x,y;
    Point(ll x,ll y):x(x),y(y){}
    Point(){
    }
};

ll dist(Point A,Point B){
    return abs(A.x-B.x)+abs(A.y-B.y);
}

bool check(vector<Point>a){
    for(Point A:a){
        if(A.y!=0)return false;
    }
    return true;
}
bool comp(Point A,Point B){
    if(A.x==B.x)return A.y<B.y;
    return A.x<B.x;
}
void solve(){
    int n;cin>>n;
    int k;cin>>k;
    vector<Point>a(n);
    for(int i=0;i<n;i++)cin>>a[i].x>>a[i].y;
    sort(a.begin(),a.end(),comp);
    if(check(a)){
        multiset<ll>dist;
        for(int i=1;i<n;i++){
            dist.insert(a[i].x-a[i-1].x);
        }
        int ind=0;
        for(ll to:dist){
            if(ind>=k)break;
            cout<<to<<"\n";
            ind++;
        }
        return;
    }
    multiset<ll>d;
    for(int i=0;i<n;i++){
        for(int j=0;j<i;j++){
            d.insert(dist(a[i],a[j]));
        }
    }
    int ind=0;
    for(ll to:d){
            if(ind>=k)break;
            cout<<to<<"\n";
            ind++;
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    solve();
}
#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...