Наконец, на рынке появилась вакцина от COVID, и правительство Чефленда попросило вас разработать план ее распространения среди населения как можно скорее. Всего N человек в возрасте a1,a2,…,aN.

Есть только одна больница, где проводится вакцинация, и в день можно вакцинировать не более D человек. Любой человек в возрасте ≥80 или ≤9 лет считается в группе риска. В каждый день нельзя вакцинировать как человека, находящегося в группе риска, так и человека, не входящего в группу риска. Найдите наименьшее количество дней, необходимое для вакцинации всех.

Вход

  • Первая строка входных данных содержит единственное целое число T, обозначающее количество тестовых случаев. Ниже приводится описание T тестовых случаев.
  • Первая строка каждого набора входных данных содержит два целых числа, разделенных пробелом, NN и D.
  • Во второй строке через пробел записаны N целых чисел a1,a2,…,aN.

Вывод

Для каждого набора входных данных выведите одну строку, содержащую одно целое число ― наименьшее требуемое количество дней.

Ограничения

  • 1≤T≤10
  • 1≤N≤10⁴
  • 1≤D≤10⁵
  • 1≤ai≤100 для каждого действительного i

Подзадачи

Подзадача №1 (100 баллов): исходные ограничения

Пример ввода

2
10 1
10 20 30 40 50 60 90 80 100 1
5 2
9 80 27 72 79

Пример вывода

10
3

Объяснение

Пример 1: нам не нужно беспокоиться о том, как люди сгруппированы, поскольку за один день можно вакцинировать только одного человека. Нам нужно столько дней, сколько людей.

Пример 2. Есть два человека, которым угрожает опасность, и трое, которые не входят в группу риска. Одной из оптимальных стратегий является вакцинация двух человек из группы риска в 1-й день и оставшихся троих в следующие 2 дня.

РЕШЕНИЕ:

#include <iostream>
using namespace std;
#include<cmath>
#define ll long long int
int main() {
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
    
 // your code goes here
 ll t, D, N;
        
        cin >> t;
        
 while(t--)
 {   N=0;D=0;
     cin >> N >> D;
     ll arr[N], Atrist = 0, Notrisk = 0;
     for( int i = 0; i < N; i++)
     {
         cin >> arr[i];
         
         if(arr[i] >= 80 || arr[i] <= 9)
            Atrist++;
         else
             Notrisk++;
     }
       ll total = ceil((double)Atrist/(double)D) + ceil((double)Notrisk/(double)D);
       
       cout << total <<"\n";
         
     }
 return 0;
}

ССЫЛКА НА РЕШЕНИЕ:



Поддержите меня на:



AkjderB
Привет 👋 Я просто создатель.www.buymeacoffee.com



Связаться: