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>
#include "towns.h"
#define MAXN 200
using namespace std;
int n,r,mult;
int dist[MAXN],s,t,diameter,dist2[MAXN],pref[1000007];
vector< pair<int,int> > v[1000007];
int hubDistance(int N, int sub) {
int n=N; mult=-1;
for(int i=0;i<=1000000;i++){
v[i].clear(); pref[i]=0;
}
s=0; dist[0]=0;
for(int i=1;i<n;i++){
dist[i]=getDistance(0,i);
if(dist[i]>dist[s])s=i;
}
dist[s]=0; t=s;
for(int i=0;i<n;i++){
if(i==s)continue;
dist[i]=getDistance(s,i);
if(dist[i]>dist[t])t=i;
}
diameter=dist[t]; r=1000000;
for(int i=0;i<n;i++){
if(i==s or i==t)continue;
dist2[i]=getDistance(t,i);
int sum=(diameter+dist[i]+dist2[i])/2;
v[sum-dist2[i]].push_back({i,sum-diameter});
pref[sum-dist2[i]]++;
r=min(r,max(sum-dist[i],sum-dist2[i]));
}
for(int i=1;i<=1000000;i++)pref[i]+=pref[i-1];
for(int i=0;i<n;i++){
if(i==s or i==t)continue;
int sum=(diameter+dist[i]+dist2[i])/2;
if(max(sum-dist[i],sum-dist2[i]) != r)continue;
int a=pref[sum-dist2[i]-1]+1;
int c=n-a-v[sum-dist2[i]].size();
if(a>n/2 or c>n/2)continue;
/*random_shuffle(v[sum-dist2[i]].begin(),v[sum-dist2[i]].end());
int b=sum-dist2[i];
vector< pair<int,int> > z={v[b][0]};
vector<int> sz={1};
int maxsz=1;
for(int i=1;i<v[b].size();i++){
bool ok=false;
for(int f=0;f<z.size();f++){
if(v[b][i].second+z[f].second > getDistance(v[b][i].first,z[f].first)){
sz[f]++;
maxsz=max(maxsz,sz[f]);
ok=true;
break;
}
}
if(!ok){
z.push_back(v[b][i]);
sz.push_back(1);
}
if(maxsz>n/2)break;
}
if(maxsz<=n/2){
mult=1; break;
}*/
}
return r*mult;
}
Compilation message (stderr)
towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:14:6: warning: declaration of 'n' shadows a global declaration [-Wshadow]
14 | int n=N; mult=-1;
| ^
towns.cpp:8:5: note: shadowed declaration is here
8 | int n,r,mult;
| ^
towns.cpp:57:12: warning: conversion from 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} to 'int' may change value [-Wconversion]
57 | int c=n-a-v[sum-dist2[i]].size();
| ~~~^~~~~~~~~~~~~~~~~~~~~~~
towns.cpp:13:28: warning: unused parameter 'sub' [-Wunused-parameter]
13 | int hubDistance(int N, int sub) {
| ~~~~^~~
# | 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... |