#abc274d. Robot Arms 2(机械臂)

Robot Arms 2(机械臂)

题目描述

给定一个长度为 NN 的正整数序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N),以及两个整数 x,yx,y。

请判断是否能在平面直角坐标系中放置 N+1N+1 个点 p1,p2,…,pN+1p_1,p_2,\ldots,p_{N+1},使得:

  • p1=(0,0)p_1=(0,0);
  • p2=(A1,0)p_2=(A_1,0);
  • pN+1=(x,y)p_{N+1}=(x,y);
  • 对所有 1≤i≤N1\le i\le N,pip_i 与 pi+1p_{i+1} 之间的距离等于 AiA_i;
  • 对所有 1≤i≤N−11\le i\le N-1,线段 pipi+1p_ip_{i+1} 与 pi+1pi+2p_{i+1}p_{i+2} 的夹角为 90∘90^\circ。

允许两个或多个点位于相同的坐标。

输入格式

第一行包含三个整数 N,x,yN,x,y。

第二行包含 NN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_N。

输出格式

如果存在满足条件的放置方案,输出 Yes;否则输出 No。

样例 1

输入

3 -1 1
2 1 3

输出

Yes

说明

可以依次放置在 (0,0),(2,0),(2,1),(−1,1)(0,0),(2,0),(2,1),(-1,1),如下图所示。

样例1示意图

样例 2

输入

5 2 0
2 2 2 2 2

输出

Yes

说明

可以依次放置在 (0,0),(2,0),(2,2),(0,2),(0,0),(2,0)(0,0),(2,0),(2,2),(0,2),(0,0),(2,0)。多个点可以位于相同坐标。

样例 3

输入

4 5 5
1 2 3 4

输出

No

样例 4

输入

3 2 7
2 7 4

输出

No

样例 5

输入

10 8 -7
6 10 4 1 5 9 8 6 5 1

输出

Yes

数据范围

2≤N≤10002\le N\le1000,1≤Ai≤101\le A_i\le10,∣x∣,∣y∣≤10000|x|,|y|\le10000。所有输入均为整数。

来源

AtCoder ABC274D