그럴듯한 개발 블로그
반응형

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

 

2230번: 수 고르기

N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어

www.acmicpc.net

투포인터다. 드러운 예외처리는 없었다.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace	std;

int	main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

	int n, m, res = 2147483647;
	vector<int> v;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		int input;
		cin >> input;
		v.push_back(input);
	}
	sort(v.begin(), v.end());
	int start = 0;
	for (int end = 0; end < v.size(); end++) {
		while (start + 1 < end && v[end] - v[start + 1] >= m)
			start++;
		if (v[end] - v[start] >= m)
			res = min(res , v[end] - v[start]);
	}
	cout << res;
}
반응형

'<algorithm> > 백준' 카테고리의 다른 글

백준 3184 양 c++  (0) 2023.11.05
백준 1806 부분합 c++  (0) 2023.11.04
백준 20310 타노스 c++  (1) 2023.10.24
백준 1911 흙길 보수하기 c++  (1) 2023.10.14
백준 1459 걷기 c++  (0) 2023.10.12
profile

그럴듯한 개발 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!