1 条题解
-
0
#include<bits/stdc++.h> #define ull unsigned long long #define int long long #define fo(i,l,r) for(int i=l;i<=r;i++) #define fd(i,r,l) for(int i=r;i>=l;i--) using namespace std; int x,y,a[505],b[505],c[505],d[505],n; bool check(int k){ int l=-k,r=k,u=-k,D=k; bool flag=1; while(flag){ flag=0; fo(i,1,n){ if(a[i]==c[i]&&l<a[i]&&a[i]<r&&((b[i]<=u&&u<d[i])||(b[i]<D&&D<=d[i]))) u=min(u,b[i]-1),D=max(D,d[i]+1),flag=1; else if(b[i]==d[i]&&u<b[i]&&b[i]<D&&((a[i]<=l&&l<c[i])||(a[i]<r&&r<=c[i]))) l=min(l,a[i]-1),r=max(r,c[i]+1),flag=1; } } return x<=l||x>=r||y<=u||y>=D; } signed main(){ cin>>x>>y>>n; fo(i,1,n){ cin>>a[i]>>b[i]>>c[i]>>d[i]; if(a[i]>c[i]||b[i]>d[i])swap(a[i],c[i]),swap(b[i],d[i]); } int l=0,r=LLONG_MAX,ans=0; while(l<=r){ int mid=(l+r)>>1; if(check(mid))ans=mid,l=mid+1; else r=mid-1; } cout<<ans; return 0; }
- 1
信息
- ID
- 3622
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者