fork download
  1. #include <cstdio>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX = 1E5 + 10;
  7.  
  8. int length, N, Q, T, first, last , mid, idx;
  9. int arr[MAX];
  10.  
  11. int Find(int length) {
  12. if (length <= arr[0]) return 0;
  13. if (length > arr[N - 1]) return N;
  14. return lower_bound(arr, arr + N, length) - arr;
  15. }
  16.  
  17. int main() {
  18. scanf("%d", &T);
  19. while (T--) {
  20. scanf("%d %d", &N, &Q);
  21. for (int i = 0; i < N; ++i) scanf("%d", arr + i);
  22. sort(arr, arr + N);
  23. arr[N] = 0;
  24. while (Q--) {
  25. scanf("%d", &length);
  26. idx = Find(length);
  27. first = 0; last = idx + 1;
  28. while (first + 1 < last) {
  29. mid = (first + last) >> 1;
  30. if ((arr[idx - mid] + ((idx - mid) / mid)) >= length) first = mid;
  31. else last = mid;
  32. }
  33. printf("%d\n", N - idx + first);
  34. }
  35. }
  36. }
Success #stdin #stdout 0s 16440KB
stdin
2
5 2
21 9 5 8 10
10
15
5 1
1 2 3 4 5
100
stdout
3
1
0