Submission #1098347

#TimeUsernameProblemLanguageResultExecution timeMemory
1098347alexander707070Towns (IOI15_towns)C++14
25 / 100
84 ms28408 KiB
#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 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...