Поиск по этому блогу

понедельник, 2 декабря 2019 г.

Чемпионат

В полуфинале студенческого чемпионата мира по программированию NEERC участвуют команды из n институтов. Участники для проведения соревнований распределяются по k залам, каждый из которых имеет размеры, достаточные для размещения всех команд от всех институтов. При этом по правилам соревнований в одном зале может находиться не более одной команды от института.

Многие институты уже подали заявки на участие в полуфинале. Оргкомитет полуфинала хочет допустить до участия максимально возможное количество команд. При этом, разумеется, должна существовать возможность рассадить их по залам без нарушения правил.
Напишите программу, определяющую максимальное количество команд, которые можно допустить до участия в полуфинале.
Входные данные
Первая строка входного файла INPUT.TXT содержит число n - число институтов, подавших заявки. Вторая строка входного файла содержит n чисел a1, …, an (ai - это количество команд, заявленных от института номер i). Последняя строка входного файла содержит число k - количество залов, в которых проходят соревнования.
Все числа во входном файле целые, положительные и не превосходят 10000.
Выходные данные
В выходной файл OUTPUT.TXT выведите одно целое число - ответ на задачу.
Примеры
INPUT.TXT
OUTPUT.TXT
1
3
1 2 4
3
6
2
3
1 2 4
4
7

Решение
var
    i,j,m,n,r:integer;
    z:array[1..10000] of integer;
    f,f1:text;
  begin
    assign(f,'input.txt');
    reset(f);
     assign(f1,'output.txt');
     rewrite(f1);
    readln(f,n);
    for i:=1 to n do
       read(f,z[i]);
    readln(f);
    readln(f,m);
    r:=0;
    for j:=1 to n do
        if z[j]<m then  r:=r+z[j] else r:=r+m;
     write(f1,r);
     close(f);
      close(f1);
    end.

Комментариев нет:

Отправить комментарий