Submission #1152316

#TimeUsernameProblemLanguageResultExecution timeMemory
1152316justin271828Odašiljači (COCI20_odasiljaci)C++20
35 / 70
596 ms456 KiB
#include <bits/stdc++.h> using namespace std; #define double long double const double epsilon = 1.000'000'000'000'1; double sq(double x) {return x*x;} int main() { int n; cin >> n; double x[n]; double y[n]; for (int i = 0; i < n; i++) cin >> x[i] >> y[i]; double ans = 12345678987654321; double lo = 0; double hi = ans; double mid; bool v[n]; while (true) { mid = (lo+hi)/2; queue<int> q; q.push(0); memset(v, false, sizeof(v)); v[0] = true; while (!q.empty()) { int temp = q.front(); for (int i = 0; i < n; i++) { if (i == temp) continue; if (sq(mid) < sq(x[temp]-x[i])+sq(y[temp]-y[i])) continue; if (v[i]) continue; v[i] = true; q.push(i);} q.pop();} bool less = true; for (bool b: v) less = (less && b); q.push(0); memset(v, false, sizeof(v)); v[0] = true; while (!q.empty()) { int temp = q.front(); for (int i = 0; i < n; i++) { if (i == temp) continue; if (sq(mid*epsilon) < sq(x[temp]-x[i])+sq(y[temp]-y[i])) continue; if (v[i]) continue; v[i] = true; q.push(i);} q.pop();} bool more = true; for (bool b: v) more = (more && b); if (less) hi = mid/epsilon; else if (!more) lo = mid*epsilon; else break;} cout << mid/2; return 0;}
#Verdict Execution timeMemoryGrader output
Fetching results...