Надо
билеты на поезд
даниил организует поездку школьников на олимпиаду по программированию. поезд, на котором планируется добраться до места проведения олимпиады, уже выбран; осталось лишь купить билеты. на данный момент свободные места остались в n купе, притом в i-м из этих купе свободно ровно ai мест.
чтобы школьникам было нескучно, им была предоставлена возможность объединиться в пары или тройки, которые будут ехать в одном купе. всего k2 пар и k3 троек школьников изъявили желание путешествовать в одном купе. оставшиеся k1 школьников не высказали никаких предпочтений. все эти школьники различны, то есть всего на олимпиаду поедет k1 + 2×k2 + 3×k3 школьников.
определите, возможно ли купить билеты так, чтобы все пожелания были удовлетворены. даниил уже купил себе билет, то есть его брать в расчет не нужно.
формат входных данных
первая строка содержит одно целое число t (1 ≤ t ≤ 100) — количество тестов. далее следует описание t тестов. каждый из тестов описывается тремя строками.
первая строка описания теста содержит одно целое число n (1 ≤ n ≤ 105) — количество оставшихся купе.
вторая строка описания теста содержит n целых чисел a1, a2, …, an (1 ≤ ai ≤ 4) — количества свободных мест в оставшихся купе.
третья строка описания теста содержит три целых числа k1, k2 и k3 (0 ≤ ki ≤ 4×105) — количество школьников, которые не высказали никаких предпочтений, а также количество пар школьников и количество троек школьников, желающих быть в одном купе, соответственно.
гарантируется, что сумма всех n не превосходит 105.
формат результата
выведите t строк, i-я из которых содержит «yes», если в i-м тесте возможно купить билеты, удовлетворив все пожелания, и «no» в противном случае.
примеры
входные данные
2
2
3 4
1 1 1
2
3 4
1 2 1
результат работы
yes
no
входные данные
3
1
2
0 1 0
5
4 3 1 4 1
2 4 1
4
1 4 3 2
0 0 3
результат работы
yes
yes
no
примечания
в первом тесте первого примера школьника-одиночку и пару школьников можно посадить во второе купе, а тройку — в первое. во втором тесте первого примера купить билеты, удовлетворив все пожелания, не выйдет, потому что всего осталось 3 + 4 = 7 билетов, а школьников 1 × 1 + 2 × 2 + 1 × 3 = 8.
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
{
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
{
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
}
return R;
}
int main()
{
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
}
Информационные модели представляют объекты и процессы в образной или знаковой форме.
Образные модели (рисунки, фотографии и др. ) представляют собой зрительные образы объектов, зафиксированные на каком-либо носителе информации (бумаге, фото- и кинопленке и др.) . Широко используются образные информационные модели в образовании (вспомните учебные плакаты по различным предметам) и науке, где требуется классификация объектов по их внешним признакам (в ботанике, биологии, палеонтологии и др.) .
Знаковые информационные модели строятся с использованием различных языков (знаковых систем) . Знаковая информационная модель может быть представлена в форме текста (например, программы на языке программирования) , формулы (например, второго закона Ньютона F=m·a), таблицы (например, периодической таблицы элементов Д. И. Менделеева) и так далее.
Иногда при построении знаковых информационных моделей используются одновременно несколько различных языков. Примерами таких моделей могут служить географические карты, графики, диаграммы и пр. Во всех этих моделях используются одновременно как язык графических элементов, так и на протяжении своей истории человечество использовало различные и инструменты для создания информационных моделей. Эти постоянно совершенствовались. Так, первые информационные модели создавались в форме наскальных рисунков, в настоящее же время информационные модели обычно строятся и исследуются с использованием современных компьютерных технологий.