#include<stdio.h> #include<algorithm> using namespace std; const int MAX_N = 1e6; int n, d, t; pair<int, int> sc[MAX_N + 1]; bool f[MAX_N + 2]; int main() { scanf("%d", &t); while (t--) { scanf("%d %d", &n, &d); for (int i = 1; i <= n; i++) { scanf("%d", &sc[i].first); sc[i].second = i; f[i] = true; } f[n + 1] = false; sort(sc + 1, sc + 1 + n); for (int i = 0, j = 1, a, res = 1; i < d; i++) { scanf("%d", &a); for (; j <= n&&sc[j].first <= a; j++) { int idx = sc[j].second; res += f[idx - 1] + f[idx + 1] - 1; f[idx] = false; } printf("%d ", res); } puts(""); } return 0; }
7882번: Skyscrapers
https://www.acmicpc.net/problem/7882
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기