This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
long long N,K;
pair<long long,long long> lst[250005];
vector<long long> A;
priority_queue< tuple<long long,long long,long long>, vector< tuple<long long,long long,long long> >, greater< tuple<long long,long long,long long> > > pq;
set< pair<long long,long long> > s;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin >> N >> K;
for (long long i = 0; i < N; ++i) cin >> lst[i].first >> lst[i].second;
if (N <= 1000) {
for (long long i = 0; i < N; ++i) for (long long j = i+1; j < N; ++j)
A.push_back(abs(lst[i].first-lst[j].first)+abs(lst[i].second-lst[j].second));
sort(A.begin(),A.end());
for (long long i = 0; i < K; ++i) cout << A[i] << '\n';
}
else {
sort(lst,lst+N);
for (long long i = 0; i < N-1; ++i) {
pq.emplace(abs(lst[i+1].first-lst[i].first)+abs(lst[i+1].second-lst[i].second),i,i+1);
s.emplace(i,i+1);
}
long long cnt = 0;
while (!pq.empty() && cnt < K) {
long long d,a,b; tie(d,a,b) = pq.top(); pq.pop();
cout << d << '\n';
cnt++;
if (a != 0 && s.find(make_pair(a-1,b)) == s.end()) {
pq.emplace(abs(lst[b].first-lst[a-1].first)+abs(lst[b].second-lst[a-1].second),a-1,b);
s.emplace(a-1,b);
}
if (b != N-1 && s.find(make_pair(a,b+1)) == s.end()) {
pq.emplace(abs(lst[b+1].first-lst[a].first)+abs(lst[b+1].second-lst[a].second),a,b+1);
s.emplace(a,b+1);
}
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |