Submission #252967

#TimeUsernameProblemLanguageResultExecution timeMemory
252967islingrDrzava (COCI15_drzava)C++14
160 / 160
340 ms9880 KiB
#include <bits/stdc++.h> using namespace std; using ll = int64_t; #define rep(i, a, b) for (auto i = (a); i < (b); ++i) #define trav(x, v) for (auto &x : v) #define pb(x) push_back(x) #define lb(x...) lower_bound(x) #define x first #define y second const int N = 1 << 16, K = 1 << 6; const ll inf = 2e8; using pii = pair<int, int>; ll norm(const pii &p, const pii &q) { return (ll) (p.x - q.x) * (p.x - q.x) + (ll) (p.y - q.y) * (p.y - q.y); } pair<pii, short> tmp[N]; pii p(int i) { return tmp[i].x; } bool vis[N]; vector<int> g[N]; vector<short> cmp; void dfs(int u) { vis[u] = 1; cmp.pb(tmp[u].y); for (int v : g[u]) if (!vis[v]) dfs(v); } int n; short k; bool f(ll d) { int r = floor(sqrt(d)), l = 0; set<pair<int, int>> S; rep(u, 0, n) g[u].clear(), vis[u] = 0; rep(i, 0, n) { while (p(i).x - p(l).x > r) S.erase({p(l).y, l}), ++l; int cnt = 0; for (auto it = S.lb({p(i).y - r, -1}); it != end(S) && it->x - r <= p(i).y; ++it) { if (norm(p(it->y), p(i)) <= d) { g[it->y].pb(i); g[i].pb(it->y); if (k <= ++cnt) return 1; } } S.insert({p(i).y, i}); } rep(u, 0, n) { if (vis[u]) continue; cmp.clear(); dfs(u); if (size_t(k) <= cmp.size()) return 1; ll S = 0; for (auto v : cmp) { S |= (S | 1) << v; S |= S >> k; S &= (1ll << k) - 1; } if (S & 1) return 1; } return 0; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> k; rep(i, 0, n) { int x, y, c; cin >> x >> y >> c; tmp[i] = {{x, y}, c % k}; } sort(tmp, tmp + n); ll l = 0, r = inf * inf; while (r - l > 1) { ll m = l + (r - l + 1) / 2; (f(m) ? r : l) = m; } cout << fixed << setprecision(3) << sqrt(r); }
#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...
#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...