Олимпиадный тренинг

Задача . B. Монстры атакуют!


Вы играете в компьютерную игру. Текущий уровень этой игры можно представить в виде прямой линии. Ваш персонаж находится в точке \(0\). Есть \(n\) монстров, пытающихся убить вашего персонажа; у \(i\)-го монстра здоровье равно \(a_i\) и изначально он находится в точке \(x_i\).

Каждую секунду происходит следующее:

  • сначала вы стреляете до \(k\) пуль в монстров. Каждая пуля нацеливается только на одного монстра и уменьшает его здоровье на \(1\). Для каждой пули вы выбираете ее цель произвольно (например, вы можете выстрелить все пули в одного монстра, выстрелить все пули в разных монстров или выбрать любую другую комбинацию). Любой монстр может быть целью для пули, независимо от его положения и других факторов;
  • затем все живые монстры со здоровьем \(0\) или менее умирают;
  • затем все живые монстры перемещаются на \(1\) точку ближе к вам (монстры слева от вас увеличивают свои координаты на \(1\), монстры справа от вас уменьшают свои координаты на \(1\)). Если какой-либо монстр достигает вашего персонажа (перемещается в точку \(0\)), вы проигрываете.

Сможете ли вы выжить и убить всех \(n\) монстров, не дав им достичь вашего персонажа?

Входные данные

Первая строка содержит одно целое число \(t\) (\(1 \le t \le 3 \cdot 10^4\)) — количество наборов входных данных.

Каждый набор входных данных состоит из трех строк:

  • первая строка содержит два целых числа \(n\) и \(k\) (\(1 \le n \le 3 \cdot 10^5\); \(1 \le k \le 2 \cdot 10^9\));
  • вторая строка содержит \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\));
  • третья строка содержит \(n\) целых чисел \(x_1, x_2, \dots, x_n\) (\(-n \le x_1 < x_2 < x_3 < \dots < x_n \le n\); \(x_i \ne 0\)).

Дополнительное ограничение на входные данные: сумма \(n\) по всем наборам входных данных не превышает \(3 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных выведите YES, если вы можете убить всех \(n\) монстров до того, как они достигнут вашего персонажа, или NO в противном случае.

Вы можете выводить каждую букву в любом регистре (как строчную или как заглавную). Например, строки yEs, yes, Yes и YES будут приняты как положительный ответ.

Примечание

В первом примере вы можете поступить следующим образом:

  • в течение \(1\)-й секунды выстрелить \(1\) пулю в \(1\)-го монстра и \(1\) пулю в \(3\)-го монстра. Затем \(1\)-й монстр умирает, \(2\)-й и \(3\)-й монстры приближаются;
  • в течение \(2\)-й секунды выстрелить \(2\) пули во \(2\)-го монстра. Затем \(2\)-й монстр умирает, \(3\)-й монстр приближается;
  • в течение \(3\)-й секунды выстрелить \(2\) пули в \(3\)-го монстра. Затем \(3\)-й монстр умирает.

Во втором примере вы можете выстрелить только \(1\) пулю, поэтому вы можете убить только одного из двух монстров в течение \(1\)-й секунды. Затем оставшийся монстр приближается и убивает вашего персонажа.


Примеры
Входные данныеВыходные данные
1 5
3 2
1 2 3
-1 2 3
2 1
1 1
-1 1
4 10
3 4 2 5
-3 -2 1 3
5 3
2 1 3 2 5
-3 -2 3 4 5
2 1
1 2
1 2
YES
NO
YES
YES
NO

time 2500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя