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

Задача . F. Карты и радость


Задача

Темы: дп *2000

За карточным столом сидят \(n\) игроков. У каждого из них есть свое любимое число. Любимое число \(j\)-го игрока равно \(f_j\).

На столе перед игроками лежит \(k \cdot n\) карт, на карте с номером \(i\) записано число \(c_i\). Также известен массив \(h_1, h_2, \dots, h_k\), смысл которого будет объяснён ниже.

Игроки должны каким-то образом разобрать все карты так, чтобы каждому из них досталось ровно \(k\) карт. После того, как игроки разберут все карты, каждый из них подсчитает количество своих карт, на которых записано его любимое число. Радость игрока составит \(h_t\), где \(t\) — количество карт игрока, содержащих его любимое число. Если ни одна карта игрока не содержит его любимое число (то есть его \(t=0\)), то радость игрока равна \(0\).

Выведите возможную максимальную суммарную радость игроков после раздачи всех карт. Обратите внимание, что задана одна последовательность \(h_1, \dots, h_k\) на всех игроков.

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

В первой строке записаны два целых числа \(n\) и \(k\) (\(1 \le n \le 500, 1 \le k \le 10\)) — количество игроков и количество карт, которое должен получить каждый из игроков.

Во второй строке записаны \(k \cdot n\) целых чисел \(c_1, c_2, \dots, c_{k \cdot n}\) (\(1 \le c_i \le 10^5\)) — числа, записанные на картах.

В третьей строке записаны \(n\) целых чисел \(f_1, f_2, \dots, f_n\) (\(1 \le f_j \le 10^5\)) — любимые числа каждого из игроков.

В четвертой строке записаны \(k\) целых чисел \(h_1, h_2, \dots, h_k\) (\(1 \le h_t \le 10^5\)), где \(h_t\) — радость игрока (для всех игроков это значение одинаково), если он получит ровно \(t\) карт, на которых записано его любимое число. Гарантируется, что для любого \(t \in [2..k]\) верно, что \(h_{t - 1} < h_t\).

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

Выведите одно целое число — максимальную суммарную радость всех игроков после оптимальной раздачи карт.

Примечание

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

  • Игрок номер \(1\) получает карты с числами \([1, 3, 8]\);
  • Игрок номер \(2\) получает карты с числами \([2, 2, 8]\);
  • Игрок номер \(3\) получает карты с числами \([2, 2, 8]\);
  • Игрок номер \(4\) получает карты с числами \([5, 5, 5]\).

Таким образом, ответ будет равен \(2 + 6 + 6 + 7 = 21\).

Во втором тестовом примере никто не получит ни одной карты с любимым числом, поэтому ответ равен \(0\).


Примеры
Входные данныеВыходные данные
1 4 3
1 3 2 8 5 5 8 2 2 8 5 2
1 2 2 5
2 6 7
21
2 3 3
9 9 9 9 9 9 9 9 9
1 2 3
1 2 3
0

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

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