У вас есть N карт у каждой на верхней стороне написано число ai, а на нижней число bi. Вы играете в игру по следующим правилам. Вы выбираете одну карту с ai на верхней стороне, и bi на нижней стороне. Вы за нее получаете ai очков, и получаете возможность взять еще bi карт. Потом карта которую вы взяли исчезает. В начале игры у вас есть возможность взять только одну карту. Вам нужно узнать максимальное количество очков которые вы можете получить. Входные данные
В первой строке записано единственное целое число n (1≤n≤1000) — количество карт.
В следующих n строках записано по два целых неотрицательных числа, разделенных пробелом — ai и bi (0≤ai,bi≤104) — числа, записанные в верхней и нижней части i-ой карты соответственно.
Выходные данные
Выведите единственное число — максимальное количество очков, которое можно набрать за одну партию по описанным правилам.
C++
uses crt;
Var mas:array[1..1000, 1..1000] of integer;
N,M,i,j,k:integer;
Begin
Writeln('Введите размер матрицы N*M');
Write('N = ');
readln(N);
Write('M = ');
readln(M);
if (M>1000) or (N>1000) or (M<1) or (N<1)
then
Writeln('Ошибка, указанные значения выходят за пределы матрицы') else
Begin
Writeln('Введите элементы матрицы');
k:=0;
for i:=1 to N do
for j:=1 to M do
Begin
readln(mas[i,j]);
if (mas[i,j] mod 2 = 0) then k:=k+1;
end;
Writeln();
Writeln('Исходная матрица');
for i:=1 to N do
Begin
for j:=1 to M do
Begin
Write(mas[i,j], ' ')
end;
Writeln();
end;
Writeln();
Writeln('Количество четных элементов = ',k);
end;
readln;
end.