반응형
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 |