본문 바로가기
백준

백준 수학 - 1059번 : 좋은 구간

by 맴썰 2022. 3. 11.

https://www.acmicpc.net/problem/1059

 

1059번: 좋은 구간

[9, 10], [9, 11], [9, 12], [10, 11], [10, 12]

www.acmicpc.net


import java.io.*;
import java.util.*;
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int L = Integer.parseInt(br.readLine());
		ArrayList<Integer> S = new ArrayList<>();
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i=0; i<L; i++) {
			S.add(Integer.parseInt(st.nextToken()));
		}
		Collections.sort(S);
		int n = Integer.parseInt(br.readLine());
		int right = -1;
		int left = -1;
		int ans = -1;
		int idx = -1;
		for(int i=0; ; i++) {
			if(S.get(i)>n) {
				idx = i;
				break;
			}
			if(S.get(i)==n) {
				ans = 0;
				break;
			}
		}
		if(ans!=0) {
			if(idx==0) {
				left = 1;
				right = S.get(idx)-1;
				int num = n-left+1;
				ans = num*(right-n+1);
				ans--;
			}
			else {
				right = S.get(idx)-1;
				left = S.get(idx-1)+1;
				if(left==right) {
					ans = 0;
				}
				else {
					if(n==left) {
						ans = right-n;
					}
					else if(n==right) {
						ans = n-left;
					}
					else {
						int num = n-left+1;
						ans = num*(right-n+1);
						ans--;
						
					} 
				
				}
			}
		}
		bw.write(ans+"");
		bw.close();
	 }
	
}