P10126 题解
I_will_AKIOI · · 题解
题目给的是一个长度为
假设这两个数是
若
无解。
若
若
无解。
所以我们可以求出
也可以根据绝对值的几何意义,得出
同样的,如果两个数反过来,那么
于是,我们可以一直枚举相邻两个数,求出
注意开始两个端点要赋成最值,并且输出时注意保留
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100005];
double l=-1e9,r=1e9;
signed main()
{
ios::sync_with_stdio(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<n;i++)
{
if(a[i]<=a[i+1]) r=min(r,0.5*(a[i]+a[i+1]));
if(a[i]>=a[i+1]) l=max(l,0.5*(a[i]+a[i+1]));
//不写if-else的原因是防止两数相等
}
if(l>=r) cout<<"pigeon";
else printf("lovely\n%.10f",0.5*(l+r));
return 0;
}