#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast,O3,unroll-loops")
#pragma GCC target("avx,avx2")
#define Respaabs1equal2xdoner cin.tie(nullptr)->sync_with_stdio(false);
#define pll pair < long long , long long >
#define len(s) (long long)(s.size())
#define all(x) x.begin() , x.end()
#define pofik continue
#define int long long
#define pb push_back
#define F first
#define S second
const int N = 5e5 + 77 , inf = 1e18 + 77;
int n;
int x[N], y[N];
int check(int k){
int j = 1;
int ans = 0;
for(int i = 1; i <= n; i++){
while(j < n && x[j + 1] - x[i] <= k) j++;
ans += j - i;
}
return ans;
}
int k;
void make(int t){
int j = 1;
vector < int > v;
for(int i = 1; i <= n; i++){
j = max(j , i);
while(j < n && x[j + 1] - x[i] <= k) j++;
for(int e = i + 1; e <= j; e++){
v.pb(x[e] - x[i]);
}
}
sort(all(v));
for(int i = 0; i < k; i++){
cout << v[i] << '\n';
}
}
void solve(){
cin >> n >> k;
for(int i = 1; i <= n; i++){
cin >> x[i] >> y[i];
}
if(n <= 1){
vector < int > v;
for(int i = 1; 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;
}
sort(x + 1 , x + n + 1);
int l = 1 , r = 2e9 , res = 1;
while(l <= r){
int mid = (l + r) >> 1ll;
if(check(mid) <= k){
l = mid + 1;
res = mid;
}
else{
l = mid + 1;
}
}
make(res);
}
signed main(){
Respaabs1equal2xdoner
int T = 1;
// cin >> T;
while(T--){
solve();
}
}
# | 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... |