###题目
###分析
一道看起来不好做实际十分水的一道题,因为起跳和降落角度都是
4
5
0
45^0
450,所以仙人掌可转换为一段区间,这道题就是求在区间所得的大区间最大值,直接模拟就可以了,注意最后还要求一下最大值。
上代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
int l,r;
}al[300010];
bool cmp(node x,node y){
return x.l==y.l?x.r<y.r:x.l<y.l;
}
int ans=0,n,lp,rp;
int main(){
scanf("%d",&n);
for(int i=1,x,y;i<=n;i++){
scanf("%d%d",&x,&y);
if(x<y){
puts("-1");
return 0;
}
al[i].l=max(0,x-y),al[i].r=x+y;
if(i==n)
al[i].r=y;
}
sort(al+1,al+1+n,cmp);
lp=al[1].l,rp=al[1].r;
for(int i=2;i<=n;i++){
if(al[i].l<rp)
rp=max(rp,al[i].r);
else
ans=max(ans,rp-lp),lp=al[i].l,rp=al[i].r;
}
ans=max(ans,rp-lp);
double qaq=1.0*(double)ans/2;
printf("%.1lf\n",qaq);
return 0;
}