#include<bits/stdc++.h>
using namespace std;
int getDistance(int i,int j);
int hubDistance(int N,int sub){
int D1=0;
int maxD=0;
for(int i=1;i<N;i++){
int d=getDistance(0,i);
if(d>maxD){
maxD=d;
D1=i;
}
}
std::vector<int> Distances;
maxD=0;
int D2=0;
for(int i=0;i<N;i++){
int d=getDistance(D1,i);
if(d>maxD){
maxD=d;
D2=i;
}
Distances.push_back(d);
}
int R=100000000;
std::vector<int> Distances2;
vector<int> Hubs;
for(int i=0;i<N;i++){
int d=getDistance(D2,i);
Distances2.push_back(d);
int k=(d+Distances[i]-maxD)/2;
int d1=Distances[i]-k;
int d2=d-k;
d=max(d1,d2);
if(d<R){
Hubs.clear();
Hubs.push_back(d1);
}
if(d==R && Hubs[0]!=d1 && Hubs.size()<2){
Hubs.push_back(d1);
}
R=min(R,d);
}
vector<pair<int,int>> LRn(Hubs.size());
vector<vector<int>> Middle(Hubs.size());
for(int i=0;i<N;i++){
int d=Distances2[i];
int k=(d+Distances[i]-maxD)/2;
int d1=Distances[i]-k;
for(int j=0;j<Hubs.size();j++){
if(Hubs[j]<d1){
LRn[j].first+=1;
}
if(Hubs[j]>d1){
LRn[j].second+=1;
}
if(Hubs[j]==d1){
Middle[j].push_back(i);
}
}
}
return R;
for(int i=0;i<Hubs.size();i++){
if(LRn[i].first>N/2 || LRn[i].second>N/2 || Middle[i].size()>N/2){
if(LRn[i].first<=N/2 && LRn[i].second<=N/2){
vector<int> Mid=Middle[i];
while(true){
int elements=1;
int split=Mid.back();
Mid.pop_back();
vector<int> Other;
int k=(Distances2[split]+Distances[split]-maxD)/2;
int l=k+Distances[split];
while(elements+Mid.size()>N/2) {
int i=Mid.back();
Mid.pop_back();
int D=getDistance(split,i);
int d=D-(D+Distances[i]-l)/2;
if(d<k){
elements++;
}
else{
Other.push_back(i);
}
if(elements>N/2){
return -1*R;
}
}
if(Other.size()<N/2){
return R;
}
Mid=Other;
}
}
}
else{
return R;
}
}
return -1*R;
}
# | 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... |