제출 #1243567

#제출 시각아이디문제언어결과실행 시간메모리
1243567moondarkside도시들 (IOI15_towns)C++20
13 / 100
10 ms328 KiB
#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); } } } 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 -R; } } if(Other.size()<N/2){ return R; } Mid=Other; } } } else{ return R; } } return -R; }
#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...