제출 #1109206

#제출 시각아이디문제언어결과실행 시간메모리
1109206Gourougourou무제 (POI11_wyk)C++17
0 / 100
30048 ms5116 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<double,double> pll; typedef vector<ll> vll; typedef vector<pll> vpll; #define x first #define y second const double EPS = 1e-13; double dist(pll a, pll b) { return (a.x-b.x)*(a.x-b.x) + (a.y-b.y)+(a.y-b.y); } pair<pll,ll> maxDist(vpll v) { ll ans = 0; pll a = v[0]; for (pll i : v) { for (pll j : v) { ll res = dist(i,j); if (res > ans) { ans = res; a = {(i.x+j.x)/2,(i.y+j.y)/2}; } } } return {a,ans}; } vpll ok(int n, int m, vpll v, ll k) { vpll ans; int ind = 0; while (ind < n) { int cur = ind, prev = cur; while (cur < n-1 && maxDist(vpll(v.begin()+ind,v.begin()+cur+1)).y <= 4*k) { prev = cur; int dif = cur-ind+1; cur = min(cur+dif, n-1); } ll lo = prev, hi = cur; while (lo < hi) { ll mid = (lo+hi+1)/2; auto p = maxDist(vpll(v.begin()+ind, v.begin()+mid+1)); if (p.y <= 4*k) lo = mid; else hi = mid-1; } ans.push_back(maxDist(vpll(v.begin()+ind, v.begin()+lo+1)).x); ind = lo+1; } return ans.size() <= m ? ans : vpll(); } int main() { int n, m; cin >> n >> m; vpll v(n); for (pll &p : v) cin >> p.x >> p.y; double lo = 0, hi = 1e18; while (hi-lo > EPS) { double mid = (hi+lo)/2; if (ok(n,m,v,mid).size()) hi = mid; else lo = mid; } vpll ans = ok(n,m,v,hi); cout << fixed << setprecision(14); cout << sqrt(hi) << '\n'; cout << ans.size() << '\n'; for (pll p : ans) cout << p.x << ' ' << p.y << '\n'; }

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

wyk.cpp: In function 'vpll ok(int, int, vpll, ll)':
wyk.cpp:51:23: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<double, double> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   51 |     return ans.size() <= m ? ans : vpll();
      |            ~~~~~~~~~~~^~~~
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...