페이지

2230번: 수 고르기

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


$O(n\lg n)$

two pointers를 사용한다.

#include<cstdio>
#include<algorithm>
using namespace std;
int n, m, a[100000], r = 2e9;
int main() {
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i++) scanf("%d", a + i);
    sort(a, a + n);
    int i = 0, j = 0;
    while (j < n) {
        if (a[j] - a[i] < m) j++;
        else r = min(r, a[j] - a[i++]);
    }
    printf("%d", r);
    return 0;
}

댓글 없음 :

댓글 쓰기