Submission #670725

#TimeUsernameProblemLanguageResultExecution timeMemory
670725thiago_bastosWish (LMIO19_noras)C++17
23 / 100
206 ms9392 KiB
#include "bits/stdc++.h" using namespace std; #define INF 1000000000 #define INFLL 1000000000000000000ll #define EPS 1e-9 #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define pb push_back #define fi first #define sc second using i64 = long long; using u64 = unsigned long long; using ld = long double; using ii = pair<int, int>; #define double ld int n, radius; double closest(int a, int b, int c, int d) { if(1ll*a*a+1ll*b*b <= 1ll * radius*radius) return 0; return max(0.0L, (-1ll * a * c - 1ll * b * d) / double(1ll*c*c+1ll*d*d)); } double firstSec(int a, int b, int c, int d, double k) { double l = 0, r = k; while(fabs(l - r) > EPS) { double m = (l + r) / 2; double x = a + m * c, y = b + m * d; if(x * x + y * y <= 1ll * radius * radius) r = m; else l = m; } return r; } double secondSec(int a, int b, int c, int d, double k) { double l = k, r = 1e9; while(fabs(l - r) > EPS) { double m = (l + r) / 2; double x = a + m * c, y = b + m * d; if(x * x + y * y > 1ll * radius * radius) r = m; else l = m; } return r; } void solve() { cin >> n >> radius; set<ii> sweep; int opening = 0, ans = 0; for(int i = 1; i <= n; ++i) { int a, b, c, d; cin >> a >> b >> c >> d; c -= a, d -= b; double k = closest(a, b, c, d); if(hypot(a + k * c, b + k * d) - radius > EPS) continue; double l = firstSec(a, b, c, d, k); double r = secondSec(a, b, c, d, k); int L = (int)ceil(l), R = floor(r); if(L > R) continue; sweep.emplace(L, -i); sweep.emplace(R, i); } for(auto [x, k] : sweep) { opening += k < 0 ? 1 : -1; ans = max(ans, opening); } cout << ans << '\n'; } int main() { ios_base :: sync_with_stdio(false); cin.tie(0); int t = 1; //cin >> t; while(t--) solve(); return 0; }
#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...