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


[ 알고리즘풀이 ]

Lucky Set을 정렬한 후, N의 상대적인 위치를 파악해 Lucky Set에서 left, right 를 설정합니다.

left 와 N이 같다면 0을 출력하고 아니라면 경우의 수를 모두 출력해주면 됩니다.

#include<iostream>
#include<algorithm>
using namespace std;

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	int N, list[1002] = {}, L, left, right;
	cin >> N;
	for (int i = 1; i <= N; i++)
		cin >> list[i];
	sort(list, list + N + 1);

	cin >> L;
	for (int i = 0; i <= N; i++)
		if (list[i] <= L && L < list[i + 1]) {
			left = list[i];
			right = list[i + 1];
			break;
		}
	if (L == left)
		cout << 0;
	else
		cout << (L - left) * (right - L) - 1;
	return 0;
}

 

+ Recent posts