#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; }
8983번: 사냥꾼
https://www.acmicpc.net/problem/8983
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기