PS/백준
2230 - 수 고르기
Mingi Kim
2025. 2. 17. 16:43
문제
https://www.acmicpc.net/problem/2230
느낀점
투포인터 응용 문제 였는데, 인덱스를 잘못 산정해서 반례를 찾는데 어려움이 있었다. 항상 left, right 인덱스와 엣지 케이스를 잘 생각해보자
풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int N;
long long M;
cin >> N >> M;
vector<long long> arr(N);
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
sort(arr.begin(), arr.end());
int left = 0;
vector<long long> answer;
for (int right = 0; right < N; right++)
{
long long diff = arr[right] - arr[left];
if (diff < M)
{
continue;
}
else
{
answer.push_back(diff);
while (true)
{
long long diff = arr[right] - arr[left];
if (left >= N)
{
break;
}
if (diff < M)
{
break;
}
else
{
left++;
answer.push_back(diff);
}
}
}
}
sort(answer.begin(), answer.end());
cout << answer[0];
return 0;
}