2022CCPC C - 测量学

YahAHa 是虎纠大学的学生。作为 HJU-ACM 的队员,他每天要从生活区走到实验室参加训练。

HJU 的教学楼群大体上是以图书馆中心为圆心,呈若干个同心圆的分布。

经过测量,YahAHa 发现,生活区和实验室都位于半径为 RR 的大道上;从图书馆到大道上一共有 nn 条同心圆小道,他们的半径分别为 r1r1​ 到 rnrn​ 。YahAHa 可以在任意同心圆小道上,顺时针或逆时针地绕着小道行走。

此外,HJU 的教学楼群中,有两条大道分别从图书馆直通生活区和实验室。直通生活区的那条大道绕图书馆逆时针旋转 θθ 的弧度即和直通实验室的大道重合。

现在,每天准时上班的 YahAHa 想知道,他从生活区出发前往实验室,最短的路程是多长呢?

Input

第一行输入一个整数 n(1≤n≤105)n(1≤n≤105) 和两个实数 R,θ(0<R≤109,0≤θ<2π)R,θ(0<R≤109,0≤θ<2π)。

第二行输入 nn 个实数 ri(0<ri≤R)ri​(0<ri​≤R)。

数据保证上述的所有实数都是 66 位小数。

Output

输出一个实数,表示答案。

若你的答案为 aa 而正确答案为 bb ,则当且仅当相对误差或绝对误差不超过 10−310−3 时,你的答案会被认为是正确的。

即当且仅当下述公式满足时,你的答案被认为是正确的:

Sample 1

InputcopyOutputcopy
2 2.000000 1.570796
1.000000 0.500000
3.141592

Note

样例如图所示:

图中灰色部分表示不可通行的教学楼群,橙色部分为可通行的大道、同心圆小道。

YahAHa 需要从图片正下方的生活区走向图片正右方的实验室;图中白色虚线部分表示两条可能的路程。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

double p[100010];



int main()
{
	int n;
	double r,r1,r2,o;
	double pi=acos(-1);
	cin>>n>>r>>o;
	if(o>pi) o=(2*pi-o);
	o=(o/(2*pi))*360.0;
	
//	cout<<"pi: "<<pi<<endl;
//	cout<<"o: "<<o<<endl;
	double sum=0.0;
	for(int i=1;i<=n;i++)
	{
		double x;cin>>x;
		double ace=(r-x)*2+(o*pi*x)/180.0;
		if(i==1) sum=ace;
		else sum=min(ace,sum);
 	}

	
	double cnt;
	cnt=(o*pi*r)/180.0;
	sum=min(sum,cnt);
	 
	printf("%.06lf",sum);
	
	
 	
	
	
	
	
	
	
	
	
	
	
	
	return 0;
 } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值