Submission #1177377

#TimeUsernameProblemLanguageResultExecution timeMemory
1177377ackhavaTowns (IOI15_towns)C++20
25 / 100
10 ms584 KiB
#include "towns.h" #include <bits/stdc++.h> #define REP(v, i, j) for (int v = i; v != j; v++) #define FORI(v) for (auto i : v) #define FORJ(v) for (auto j : v) #define OUT(v, a) \ FORI(v) \ cout << i << a; #define OUTS(v, a, b) \ cout << v.size() << a; \ OUT(v, b) #define in(a, n) \ REP(i, 0, n) \ cin >> a[i]; #define SORT(v) sort(begin(v), end(v)) #define REV(v) reverse(begin(v), end(v)) #define MEMSET(m) memset(m, -1, sizeof m) #define pb push_back #define fi first #define se second #define detachIO \ ios_base::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0); using namespace std; int cache[200][200]; int query(int x, int y){ if(cache[x][y]!=-1)return cache[x][y]; ; return cache[x][y]=cache[y][x]=getDistance(x,y); } int hubDistance(int N, int sub) { MEMSET(cache); int f = 1; int d=query(0,f); REP(i,2,N){ int t=query(0,i); if(t>d)f=i,d=t; } int g = 0; d=query(g,f); REP(i,1,N){ if(i==f)continue; int t=query(f,i); if(t>d)g=i,d=t; } int ans=query(f,g); // cerr<<f<<" - "<<g<<endl; REP(i,0,N){ int off = (query(i,f) + query(i,g) - query(g,f)) / 2; // cerr<<query(i,f)<<" "<<query(i,g)<<" "<<query(g,f)<<" "<<off<<" -> "<<max(query(i,f),query(i,g))-off<<endl; ans=min(ans,max(query(i,f),query(i,g))-off); } // cerr<<"ANS: "<<ans<<endl; return ans; }
#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...