Superclassehdh
02.06.2022 15:10

надо написать код (очень желательно на питоне) для задачи: B. Бинго!

«Бинго» — старинная игра с множеством разновидностей. В данной задаче вы познакомитесь с одной из них.

Карточка для игры в «Бинго» представляет собой прямоугольное поле n × m, заполненное числами от 1 до k. Ведущий проводит q раундов, на каждом из которых закрашивается ровно одна ранее не закрашенная клетка. Игрок считается победителем, если на его карточке образуется вертикальная или горизонтальная линия, полностью состоящая из закрашенных клеток.

Чтобы сделать процесс немного интереснее, ведущий один раз за игру разрешает игроку закрасить произвольный набор клеток. При этом игрок должен заплатить ведущему сумму, равную максимальному из чисел, написанных на клетках выбранного набора.

После каждого раунда определите, какую минимальную сумму игрок должен заплатить ведущему, чтобы выиграть в «Бинго» к данному раунду. Если после раунда игрок уже является победителем, то ведущему можно ничего не платить и минимальная сумма равна нулю.

Исходные данные

В первой строке ввода даны целые числа, разделённые пробелом: n, m, q, k (1 ≤ n, m ≤ 105, 1 ≤ n · m ≤ 2 · 105, 1 ≤ q ≤ min(105, n · m), 1 ≤ k ≤ 109) — размер игрового билета, количество раундов и ограничение на величину числа в игровой клетке. Далее следует описание игрового поля: таблица, дано n строк и m столбцов. Числа в каждой строке разделены пробелом. Каждое число натуральное и не превышает k.

Далее следуют q строк описания запросов на закрашивание клеток. В каждой строке даны 2 числа ri и ci (1 ≤ ri ≤ n, 1 ≤ ci ≤ m) — координаты строки и столбца закрашиваемой клетки. Гарантируется, что никакая клетка не закрашивается дважды.

Результат

Для каждого раунда выведите в отдельной строке минимальную сумму, которую игрок должен заплатить ведущему.

пример:

ввод вывод

33 4 5 3

1 3 2 2

3 3 4 1

4 5 2 0

3 1

3 2

2 1

1 1

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
lolipop101
11.04.2021 05:57
Type
  Frac = record
    P: integer;
    Q: 1..32767
  end;

function gcd(a: integer; b: integer): integer;
{Нахождение НОД}
var
  i: integer;
begin
  while b <> 0 do
  begin
    a := a mod b;
    i := b; b := a; a := i
  end;
  result := a
end;

function RedFrac(a: Frac): Frac;
{Сокращение дроби}
var
  igcd: integer;
  r: Frac;
begin
  igcd := gcd(a.P, a.Q);
  r.P := a.P div igcd;
  r.Q := a.Q div igcd;
  RedFrac := r
end;

function Add(a, b: Frac): Frac;
{Сложение дробей}
var
  r: Frac;
begin
  r.P := a.P * b.Q + b.P * a.Q;
  r.Q := a.Q * b.Q;
  Add := RedFrac(r)
end;

function Mult(a, b: Frac): Frac;
{Умножение дробей}
var
  r: Frac;
begin
  r.P := a.P * b.P;
  r.Q := a.Q * b.Q;
  Mult := RedFrac(r)
end;

var
  m, n, k: Frac;

begin
  m.P := 4; m.Q := 15; {4/15}
  n.P := 9; n.Q := 25; {9/25}
  k := Add(m, n);
  Writeln(k.P, '/', k.Q);
  k := Mult(m, n);
  Writeln(k.P, '/', k.Q);
end.

Результат выполнения программы:
47/75
12/125
0,0(0 оценок)
Ответ:
D3MON1
18.07.2021 06:57
Написал на VBS, тот же бейсик, который есть в школах

dim years
years = inputbox("Введите ваш возраст")
if years = 1 then msgbox("Мне 1 год") end if
if years = 2 then msgbox("Мне 2 годa") end if
if years = 3 then msgbox("Мне 3 годa") end if
if years = 4 then msgbox("Мне 4 годa") end if
if (years >= 5) and (years <= 19) then msgbox("Мне "+cstr(years)+" лет") end if

if years >= 20 then
dim s
s = "Мне "+cstr(years)
if (years mod 10 = 1) then s = s + " год" end if
if (years mod 10 >= 2) and (years mod 10 <= 4) then s = s + " годa" end if
if (years mod 10 >= 5) and (years mod 10 <= 9) then s = s + " лет" end if
if (years mod 10 = 0) then s = s + " лет" end if
msgbox(s)
end if
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота