天天看點

1098 岩洞施工(JAVA)

要将一條直徑至少為 1 個機關的長管道水準送入地形複雜的岩洞中,究竟是否可能?下面的兩幅圖分别給出了岩洞的剖面圖,深藍色的折線勾勒出岩洞頂部和底部的輪廓。圖 1 是有可能的,綠色部分顯示直徑為 1 的管道可以送入。圖 2 就不可能,除非把頂部或底部的突出部分削掉 1 個機關的高度。

1098 岩洞施工(JAVA)

本題就請你編寫程式,判斷給定的岩洞中是否可以施工。

輸入格式:

輸入在第一行給出一個不超過 100 的正整數 N,即橫向采樣的點數。随後兩行資料,從左到右順次給出采樣點的縱坐标:第 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      

代碼實作:

import java.io.*;

/**
 * @author yx
 * @date 2022-07-27 16:08
 */
public class Main {
    static PrintWriter out=new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);

    public static void main(String[] args) throws IOException {
        in.nextToken();
        int N=(int) in.nval;
        int max=0;
        int min=1000000000;
        for (int i = 0; i < N; i++) {
            in.nextToken();
            int temp=(int) in.nval;
            if(temp < min){
                min=temp;
            }
        }
        for (int i = 0; i < N; i++) {
            in.nextToken();
            int temp=(int) in.nval;
            if(temp > max){
                max=temp;
            }
        }
        if(min>max){
            System.out.println("Yes "+(min-max));
        }else {
            System.out.println("No "+(max-min+1));
        }
    }
}