Submission #252926

#TimeUsernameProblemLanguageResultExecution timeMemory
252926islingrDrzava (COCI15_drzava)C++14
160 / 160
297 ms4600 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 lb(x...) lower_bound(x) #define x first #define y second const int N = 1 << 16, K = 1 << 6; const ll inf = 2e8; int nxt[N]; int head(int u) { return nxt[u] != u ? nxt[u] = head(nxt[u]) : u; } void unite(int u, int v) { nxt[head(u)] = head(v); } 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; } int n; short k; vector<short> cmp[N]; bool f(ll d) { rep(u, 0, n) nxt[u] = u, cmp[u].clear(); int r = floor(sqrt(d)), l = 0; set<pair<int, int>> S; 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) { unite(it->y, i); if (k <= ++cnt) return true; } } S.insert({p(i).y, i}); } rep(u, 0, n) cmp[head(u)].push_back(tmp[u].y); rep(z, 0, n) { if (cmp[z].empty()) continue; if (size_t(k) <= cmp[z].size()) return true; ll S = 0; trav(v, cmp[z]) { S |= (S | 1) << v; S |= S >> k; S &= (1ll << k) - 1; if (S & 1) return true; } } return false; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); 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...