페이지

8983번: 사냥꾼

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


#include<stdio.h>
#include<math.h>
#include<algorithm>
int M, N, L, Mx[100001], x, y, cnt;
int dis;
int search(int a)
{
    int st = 1, en = M, mid = (st + en) / 2;
    while (st != mid)
    {
        if (Mx[mid]>x) en = mid;
        else if (Mx[mid]<x) st = mid;
        else return Mx[mid];
        mid = (st + en) / 2;
    }
    if (abs(Mx[st] - x)>abs(Mx[en] - x)) return Mx[en];
    else return Mx[st];
}
int main()
{
    int i;
    scanf("%d %d %d", &M, &N, &L);
    for (i = 1; i <= M; i++)
        scanf("%d", &Mx[i]);
    std::sort(Mx + 1, Mx + M + 1);
    for (i = 1; i <= N; i++)
    {
        scanf("%d %d", &x, &y);
        dis = abs(x - search(x));
        if (dis + y <= L) cnt++;
    }
    printf("%d\n", cnt);
    return 0;
}

댓글 없음 :

댓글 쓰기