pta 1098 巖洞施工 (20 分)
1098 巖洞施工 (20 分)
要將一條直徑至少為 1 個單位的長管道水平送入地形復雜的巖洞中,究竟是否可能?下面的兩幅圖分別給出了巖洞的剖面圖,深藍色的折線勾勒出巖洞頂部和底部的輪廓。圖 1 是有可能的,綠色部分顯示直徑為 1 的管道可以送入。圖 2 就不可能,除非把頂部或底部的突出部分削掉 1 個單位的高度。

本題就請你編寫程序,判斷給定的巖洞中是否可以施工。
輸入格式:
輸入在第一行給出一個不超過 100 的正整數(shù)?,即橫向采樣的點數(shù)。隨后兩行數(shù)據(jù),從左到右順次給出采樣點的縱坐標:第 1 行是巖洞頂部的采樣點,第 2 行是巖洞底部的采樣點。這里假設(shè)坐標原點在左下角,每個縱坐標為不超過 1000 的非負整數(shù)。同行數(shù)字間以空格分隔。
題目保證輸入數(shù)據(jù)是合理的,即巖洞底部的輪廓線不會與頂部輪廓線交叉。
輸出格式:
如果可以直接施工,則在一行中輸出?Yes?和可以送入的管道的最大直徑;如果不行,則輸出?No?和至少需要削掉的高度。答案和數(shù)字間以 1 個空格分隔。
輸入樣例 1:
11
7 6 5 5 6 5 4 5 5 4 43 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 43 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;
} 評論
圖片
表情
