Месклиниты собрались в экспедицию ** край света. У них есть корабль, состоящий из N × M...

0 голосов
766 просмотров

Месклиниты собрались в экспедицию на край света. У них есть корабль, состоящий из N × M плотиков, связанных между собой. У каждого плотика есть своя грузоподъемность, а у каждого месклинита – своя масса. На каждом плотике может находиться не более одного месклинита. Если грузоподъемность выбранного плотика меньше массы месклинита, то бедный месклинит утонет при посадке.

Руководитель экспедиции продумывает рассадку по плотикам. Помогите ему определить, какому максимальному количеству месклинитов удастся отправиться в путь.

Входные данные
В первой строке даны числа N и M (1 ≤ N, M ≤ 40). В каждой из последующих N строк содержится по M чисел, обозначающих грузоподъемность соответствующего плотика. В (N+2)-ой строке находится число K (1 ≤ K ≤ 2000) – количество месклинитов. В (N+3)-ей строке содержатся K чисел, i-ое из которых – масса i-ого месклинита. Все массы месклинитов и грузоподъемности плотиков – натуральные числа, не превышающие 109.

Выходные данные
Требуется вывести одно число – максимально возможное количество участников экспедиции.

Пример:
входные данные
3 2
5 10
7 5
5 5
6
9 5 3 5 12 10
выходные данные
4


Информатика Начинающий (100 баллов)
оставил комментарий Начинающий (100 баллов)

И если можно, то на языке c++! Или в крайнем случае Pascal!

оставил комментарий Архангел (142k баллов)

Кто-то начитался "Mission Gravity" К.Хола? Это конкурсная задача, такие тут запрещены.

оставил комментарий Одаренный (3.6k баллов)

это задача с информатикса мццме??

оставил комментарий Начинающий (100 баллов)

irka1804, да, с информатикса

Дан 1 ответ
0 голосов
Одаренный (3.6k баллов)
 
Правильный ответ

#include  
#include
#include
using namespace std;

int main()
{
long long n, m, i, j, k;
cin >> n >> m;
vector < long long > plot, mesk;

for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
{
long long x;
cin >> x;
plot.push_back(x);
}
cin >> k;
for (i = 0; i < k; i++)
{
long long x;
cin >> x;
mesk.push_back(x);
}
sort(plot.begin(), plot.end());
sort(mesk.begin(), mesk.end());

k = 0;
i = plot.size() - 1;
j = mesk.size() - 1;
while (i * j > 0)
{
if (plot[i] >= mesk[j])
{
k++;
i--;
j--;
}
else
j--;
}
cout << k << endl;<br>}

оставил комментарий Начинающий (100 баллов)

А почему у меня пишет "Ошибка выполнения"? (На информатиксе)

оставил комментарий Одаренный (3.6k баллов)

значит надо искать ошибку =((

оставил комментарий Одаренный (3.6k баллов)

строчку while (i * j > 0) замени на ((i+1)*(j+1) > 0)

оставил комментарий Одаренный (3.6k баллов)

И проверь язык

оставил комментарий Одаренный (3.6k баллов)

у меня все зашло

оставил комментарий Начинающий (100 баллов)

Cпасибо!

...