Submission #1243526

#TimeUsernameProblemLanguageResultExecution timeMemory
1243526moondarksideTowns (IOI15_towns)C++20
25 / 100
10 ms472 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);
        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.push_back(d1);
        }
        
        R=min(R,d);
        
        Distances2.push_back(i);
    }
    
    
    vector<pair<int,int>> LRn(Hubs.size());
    vector<int> Eq(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]==d){
                Eq[j]+=1;
            }
            
        }
        
    }
    
    int mult=-1;
    
    for(int i=0;i<Hubs.size();i++){
        if(LRn[i].first>N/2 || LRn[i].second>N/2 || Eq[i]>N/2){
            
        }
        else{
            mult=1;
        }
        
        
    }
    
    
    
    return R*mult;
    
    
    
}
#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...