Катя881118
04.03.2023 03:33

Ограничение времени 1 секунда Ограничение памяти 256Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В Берляндской республике проходят выборы правителя. К сожалению, Берляндия лишь недавно отказалась от монархии, поэтому выборы в ней проходят не совсем честно.

Берляндия разбита на m районов, пронумерованных целыми числами от 1 до m. Также в Берляндии есть n избирательных участков, пронумерованных целыми числами от 1 до n, причем i-й участок находится в районе с номером ci. Исходя из опыта предыдущих лет, Фонд борьбы со вборсами определил, что на i-м участке собираются вбросить ai бюллетеней. Фонд может расставить не более, чем C наблюдателей на какие-то из участков, причем на каждый участок можно отправить не более одного наблюдателя. При этом если на i-м участке будет стоять наблюдатель, то на нем не будут вбрасывать бюллетени, а иначе, как и планировалось, будет вброшено ai бюллетеней. Также, если на участках в i-м районе суммарно будет стоять хотя бы bi наблюдателей, то на каждом участке в этом районе не вбросят ни одного бюллетеня, независимо от наличия наблюдателя на этом участке.

Фонду борьбы со вбросами определить минимально возможное количество вброшенных бюллетеней при оптимальной расстановке наблюдателей.

Формат ввода
Первая строка содержит три целых числа n, m и C — количество участков, количество районов и максимальное количество расставленных наблюдателей соответственно (1 ≤ m ≤ n ≤ 4000; 1 ≤ C ≤ 4000).

Вторая строка содержит n целых чисел c1, c2, … , cn — номера районов, в которых находятся участки (1 ≤ ci ≤ m). Гарантируется, что в каждом районе есть хотя бы один участок.

Третья строка содержит n целых чисел a1, a2, … , an — количества бюллетеней, которые планируется вбросить на участках (1 ≤ ai ≤ 2 ⋅ 105).

Последняя строка содержит m целых чисел b1, b2, ..., bm — количества наблюдателей, которые необходимо расставить в каждом из районов, чтобы на участках этого района не было вбросов (1 ≤ bi ≤ n). Гарантируется, что bi не превосходит количество участков, находящихся в i-м районе.

Формат вывода
Выведите единственное целое число — ответ на задачу.
написать на питоне

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Misha211103
30.05.2020 19:52
Var
  arr: array[1..27] of integer;
  summ: integer;
begin
  Randomize;
  for var i := 1 to 27 do
  begin
    arr[i] := random(-5, 5);
    summ := summ + arr[i];
  end;
  writeln('Массив: ',arr);
  writeln('Сумма всех элементов массива = ',summ);
  for var i := 1 to 27 do if arr[i] = 0 then arr[i] := summ;
  writeln('Массив: ',arr);
end.

пример работы:
Массив: [5,-1,1,5,4,-2,-3,0,3,5,-3,-4,3,0,-1,-4,5,-2,1,-4,5,2,-4,5,4,-5,-1]
Сумма всех элементов массива = 14
Массив: [5,-1,1,5,4,-2,-3,14,3,5,-3,-4,3,14,-1,-4,5,-2,1,-4,5,2,-4,5,4,-5,-1]

var
  arr: array of integer;
  n,k,m: integer;
begin
  write('Введи n: ');
  readln(n);
  Randomize;
  arr:= new integer[n];
  for var i := 0 to n-1 do arr[i] := random(-5, 5);
  writeln('Массив: ',arr);
  for var i := 0 to n-1 do
  begin
    if arr[i]<0 then inc(k);
    if (i>=1) and (i<=6) then inc(m);
    if (i>=6) and (arr[i]>=0) then arr[i]:=1;
  end;
  writeln('Количество отрицательных элементов массива = ',k);
  writeln('Количество элементов массива в интервале [2..7] = ',m);
  writeln('Массив: ',arr);
end.

Пример работы:
Введи n: 5
Массив: [0,1,-4,1,3]
Количество отрицательных элементов массива = 1
Количество элементов массива в интервале [2..7] = 4
Массив: [0,1,-4,1,3]

Введи n: 15
Массив: [0,1,4,3,-3,5,-4,-1,1,-2,3,1,-4,1,3]
Количество отрицательных элементов массива = 5
Количество элементов массива в интервале [2..7] = 6
Массив: [0,1,4,3,-3,5,-4,-1,1,-2,1,1,-4,1,1]
0,0(0 оценок)
Ответ:
squarenq
08.08.2020 02:40
Сумма 4-х степеней N-значного числа не превосходит N * 9^4 < 10000N.
С другой стороны, N-значное число больше 10^(N-2).
Для того, чтобы одно было равно другому, должно выполниться
10^(N - 2) < 10000N, 10^N < N * 10^6.
Так может быть, только если N < 7, поэтому ищем числа среди 1..999999.

Код:
function Sum4Deg(n: integer): integer;
var
  s: integer;
begin
  s := 0;
  repeat
    s := s + sqr(sqr(n mod 10));
    n := n div 10;
  until n = 0;
  Sum4Deg := s;
end;

var
  i: integer;
begin
  for i := 1 to 999999 do
    if i = Sum4Deg(i) then
      writeln(i);
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота