제출 #207286

#제출 시각아이디문제언어결과실행 시간메모리
207286AQT도시들 (IOI15_towns)C++14
25 / 100
26 ms380 KiB
#include <towns.h> #include <bits/stdc++.h> using namespace std; int dist[2][200]; int par[200], sz[200]; bool midset[200]; int hubDistance(int N, int sub){ int d1 = 0, d2 = 0; for(int i = 1; i<N; i++){ dist[0][i] = getDistance(0, i); if(dist[0][i] > dist[0][d1]){ d1 = i; } } for(int i = 0; i<N; i++){ dist[1][i] = getDistance(d1, i); if(dist[1][i] > dist[1][d2]){ d2 = i; } } int dia = dist[1][d2]; int ans = dia; for(int i = 0; i<N; i++){ int k = (dist[0][d1] + dist[1][i] - dist[0][i])/2; if(abs(ans-dia/2) > abs(k-dia/2)){ ans = k; } midset[i] = 0; } ans = max(ans, dia-ans); int lft = 0, rht = 0; for(int i = 0; i<N; i++){ int k = (dist[0][d1] + dist[1][i] - dist[0][i])/2; if(dia-k > ans){ midset[i] = 1; lft++; } else if(k > ans){ midset[i] = 1; rht++; } } if(max(lft, rht) > N/2){ ans = -ans; return ans; } vector<int> v, w, t; for(int i =0 ; i<N; i++){ if(midset[i]){ continue; } par[i] = i; v.push_back(i); sz[i] = 1; } int g = -1; for(int k = 0; k<10; k++){ while(v.size() >= 2){ int n = v.back(); v.pop_back(); int m = v.back(); v.pop_back(); if(dist[1][n] + dist[1][m] - getDistance(n, m) > dia){ par[n] = -1; sz[m] += sz[n]; w.push_back(m); } else{ t.push_back(n); t.push_back(m); } } if(v.size() == 1 && w.empty()){ g = v[0]; break; } swap(v, w); w.clear(); } if(g != -1){ int cnt = 0; for(int i = 0; i<N; i++){ if(par[i] == i){ if(dist[1][i] + dist[1][g] - getDistance(i, g) > dia){ cnt += sz[i]; } } } if(cnt > N/2){ ans = -ans; } } else{ ans = -ans; } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:10:28: warning: unused parameter 'sub' [-Wunused-parameter]
 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...