Submission #1164748

#TimeUsernameProblemLanguageResultExecution timeMemory
1164748KaleemRazaSyedWish (LMIO19_noras)C++20
0 / 100
0 ms324 KiB
#include<bits/stdc++.h> using namespace std; typedef long double ld; typedef long long ll; int n; ll r; int main() { cin >> n >> r; ll a[n], b[n], c[n], d[n]; for(int i = 0; i < n; i ++) cin >> a[i] >> b[i] >> c[i] >> d[i]; vector<pair<ll, ll> > lr; for(int i = 0; i < n; i ++) { pair<ll,ll> res; ll mi = 1e9, mx = -1; if(a[i] - c[i] == 0) // the line is horizontal { if(a[i] * a[i] > r * r) continue; ll b2 = r * r - a[i] * a[i]; ll b1 = sqrtl(b2); mi = (b1 - b[i]) / (d[i] - b[i]); mx = (-b1 - b[i]) / (d[i] - b[i]); if(mx < mi) swap(mx, mi); } else if(b[i] - d[i] == 0) { if(b[i] * b[i] > r * r) continue; ll b2 = r * r - b[i] * b[i]; ll b1 = sqrtl(b2); mi = (b1 - a[i]) / (c[i] - a[i]); mx = (-b1 - a[i]) / (c[i] - a[i]); if(mi > mx) swap(mi, mx); } else { } if(mx < 0) mi = 0, mx = -1; else mi = max(mi, 0ll); res = {mi, mx}; lr.push_back(res); } sort(lr.begin(), lr.end()); multiset<ll> st; int ans = 0; int j = -1; for(auto [l, r] : lr) { while(j + 1 < lr.size() && lr[j + 1].first <= l) st.insert(lr[j + 1].second), j++; while(st.size() && *st.begin() < l) st.erase(st.begin()); ans = max(ans, (int)(st.size())); } cout << ans << endl; 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...