pta 1098 岩洞施工 (20 分)

ACM比赛整理

共 1006字,需浏览 3分钟

 ·

2022-01-13 06:35

1098 岩洞施工 (20 分)


要将一条直径至少为 1 个单位的长管道水平送入地形复杂的岩洞中,究竟是否可能?下面的两幅图分别给出了岩洞的剖面图,深蓝色的折线勾勒出岩洞顶部和底部的轮廓。图 1 是有可能的,绿色部分显示直径为 1 的管道可以送入。图 2 就不可能,除非把顶部或底部的突出部分削掉 1 个单位的高度。

本题就请你编写程序,判断给定的岩洞中是否可以施工。

输入格式:

输入在第一行给出一个不超过 100 的正整数 ,即横向采样的点数。随后两行数据,从左到右顺次给出采样点的纵坐标:第 1 行是岩洞顶部的采样点,第 2 行是岩洞底部的采样点。这里假设坐标原点在左下角,每个纵坐标为不超过 1000 的非负整数。同行数字间以空格分隔。

题目保证输入数据是合理的,即岩洞底部的轮廓线不会与顶部轮廓线交叉。

输出格式:

如果可以直接施工,则在一行中输出 Yes 和可以送入的管道的最大直径;如果不行,则输出 No 和至少需要削掉的高度。答案和数字间以 1 个空格分隔。

输入样例 1:

11
7 6 5 5 6 5 4 5 5 4 4

3 2 2 2 2 3 3 2 1 2 3

输出样例 1:

Yes 1

输入样例 2:

11
7 6 5 5 6 5 4 5 5 4 4

3 2 2 2 3 4 3 2 1 2 3

输出样例 2:

No 1



代码;

#include 
#include
#include
using namespace std;
const int N = 1005;
int arr[N], brr[N];
typedef pair PII;
int main()
{
int n, Min = 0x3f3f3f3f, Max = -0x3f3f3f3f;
cin>>n;
for(int i = 0; i < n; i++)
{
cin>>arr[i];
Min = min(Min, arr[i]);
}
for(int i = 0; i < n; i++)
{
cin>>brr[i];
Max = max(Max, brr[i]);
}
if(Min > Max)
cout<<"Yes "<< Min - Max< else
cout<<"No "<< Max - Min + 1< return 0;
}



浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报