제출 #30729

#제출 시각아이디문제언어결과실행 시간메모리
30729rondojim도시들 (IOI15_towns)C++14
35 / 100
193 ms25548 KiB
#include "towns.h" #include <bits/stdc++.h> using namespace std ; #define ii pair<int,int> #define vi vector<int> #define fi first #define se second #define vii vector<ii> int from[105] , to[105] , dist[105][105] ; vii len[1000010] ; int hubDistance(int n, int sub) { memset(dist , -1 , sizeof dist) ; int mdist = -1 , opt = -1 , tmp ; for(int i=0;i<n;i++){ tmp = getDistance(0 , i) ; if(mdist < tmp){ mdist = tmp ; opt = i ; } } mdist = -1 ; int nxt = -1 ; for(int i=0;i<n;i++){ from[i] = getDistance(opt , i) ; if(from[i] > mdist){ mdist = from[i] ; nxt = i; } } for(int i=0;i<n;i++) to[i] = getDistance(nxt , i ) ; for(int i=1;i<=1000000;i++) len[i].clear() ; int res = 1e9 ; for(int i=0;i<n;i++){ if(i == nxt ||i == opt) continue ; int ok = (from[i] + to[i] - mdist)/2 ; int ln = from[i] - ok ; len[ln].push_back({i , ok }) ; res = min(res , max( mdist - ln , ln ) ) ; } if(sub <= 2) return res ; if(sub == 4){ int sum = 1 ; bool chk = 0 ; for(int i=1;i<=mdist;i++){ if(len[i].empty()) continue ; if(max(i , mdist - i) == res) { if( (int)len[i].size() <= n/2 && sum<=n/2 && n - sum - (int)len[i].size() <= n/2 ) chk = 1 ; } sum += (int)len[i].size() ; } if(chk ) return res ; else return -res ; } }

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

towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:58:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#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...