Submission #1164851

#TimeUsernameProblemLanguageResultExecution timeMemory
1164851MuhammadSaramWish (LMIO19_noras)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main() { int n,R; cin>>n>>R; int 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<int> v,v1,v2; set<int> se; for (int i=0;i<n;i++) { d[i]-=b[i]; c[i]-=a[i]; int l,r,l1,r1; if (c[i]<0) { int s=-1,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (c[i]*mid+a[i]<=R) e=mid; else s=mid; } l=e; s=0,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (c[i]*mid+a[i]>=-R) s=mid; else e=mid; } r=s; } else { int s=-1,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (c[i]*mid+a[i]>=-R) e=mid; else s=mid; } l=e; s=0,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (c[i]*mid+a[i]<=R) s=mid; else e=mid; } r=s; } if (d[i]<0) { int s=-1,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (d[i]*mid+b[i]<=R) e=mid; else s=mid; } l1=e; s=0,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (d[i]*mid+b[i]>=-R) s=mid; else e=mid; } r1=s; } else { int s=-1,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (d[i]*mid+b[i]>=-R) e=mid; else s=mid; } l1=e; s=0,e=1e9; while (s+1<e) { int mid=(s+e)/2; if (d[i]*mid+b[i]<=R) s=mid; else e=mid; } r1=s; } l=max(l,l1),r=min(r,r1); int l2=-1,r2=-1; for (int t=l;t<=r;t++) { if (a[i]*a[i]+b[i]*b[i]<=R*R) l2=(l2==-1?t:l2),r2=t; a[i]+=c[i],b[i]+=d[i]; } if (~l2) v.push_back(l2),v1.push_back(r2),v2.push_back(l2),v2.push_back(r2); } sort(v.begin(),v.end()); sort(v1.begin(),v1.end()); sort(v2.begin(),v2.end()); int ans=0,id=0,id1=0; for (int i:se) { while (id<v.size() && v[id]<=i) id++; while (id1<v1.size() && v1[id1]<i) id1++; ans=max(ans,id-id1); } 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...