Артём1228777
20.02.2022 08:01

Программирование, паскаль/питон

на фкн вшэ после 2 курса студенты выбирают себе специализацию. каждый студент составляет список приоритетов специализаций, на которые он хотел бы попасть. кроме того, у каждого студента есть его позиция в рейтинге (зависит от среднего за время обучения, у некоторых студентов позиция может совпадать). на каждой специализации есть максимальное количество студентов, которые могут быть на неё приняты.

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

формат входных данных
в первой строке задается два числа: n и k (1 ≤ n, k ≤ 1) — количество студентов и специализаций соответственно.

в следующей строке задается k натуральных чисел si (1 ≤ si ≤ 1), где si — количество студентов, которые готова принять специализация номер i.

в следующих n строках содержится описание приоритетов для каждого из студентов. описание состоит из числа r (1 ≤ r ≤ n) — позиции студента в рейтинге, числа t (1 ≤ t ≤ n) — количества желаемых специализаций и t чисел от 1 до k — номера желаемых специализаций в порядке убывания приоритета. номера специализаций не повторяются. гарантируется, что сумма t для всех студентов не превосходит 106.

формат результата
для каждого из n студентов выведите номер специализации, на которую он будет распределен. в случае, если на всех желаемых специализациях все места заняты студентами с более высокой позицией в рейтинге, то для студента следует вывести число -1. если правильных ответов несколько — выведите любой из них.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
клубочек333
31.07.2020 00:58

Объяснение:

рлллолшчллы пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук пук тра3 я не знаю почему у тебя так же когда ты один ты постоянно пишешь звонишь хотя бы тоже поела и все больше ничего я не знаю почему у тебя р от меня надо было с 33333месяцев Тогда и 44беседовать

0,0(0 оценок)
Ответ:
kupmvik
17.03.2023 05:57
// PascalABC.NET 3.0, сборка 1128
const
  nmax=100;
var
  n,i,j,nn,nz,np,t:integer;
  a,an,az,ap:array[1..nmax] of integer;
begin
  // формируем массив и выводим его
  Write('Количество элементов в массиве: '); Read(n);
  for i:=1 to n do begin
    a[i]:=Random(11)-5;
    Write(a[i],' ')
    end;
  Writeln;
  // разбиваем массив на три подмассива
  nn:=0; nz:=0; np:=0;
  for i:=1 to n do
    if a[i]<0 then begin nn:=nn+1; an[nn]:=a[i] end
    else
      if a[i]=0 then begin nz:=nz+1; az[nz]:=a[i] end
      else begin np:=np+1; ap[np]:=a[i] end;
  // сортируем массив с отрицательными элементами по убыванию
  for i:=1 to nn-1 do
    for j:=1 to nn-1 do
      if an[j]<an[j+1] then
        begin t:=an[j]; an[j]:=an[j+1]; an[j+1]:=t end;
  // сортируем массив с положительными элементами по возрастанию
  for i:=1 to np-1 do
    for j:=1 to np-1 do
      if ap[j]>ap[j+1] then
        begin t:=ap[j]; ap[j]:=ap[j+1]; ap[j+1]:=t end;
  // формируем новое содержимое массива a
  i:=0;
  for j:=1 to nz do begin i:=i+1; a[i]:=az[j] end;
  for j:=1 to np do begin i:=i+1; a[i]:=ap[j] end;
  for j:=1 to nn do begin i:=i+1; a[i]:=an[j] end;
  // вывод результата
  for i:=1 to n do Write(a[i],' ');
  Writeln
end.

Тестовое решение:
Количество элементов в массиве: 15
1 2 5 0 -5 -3 0 0 1 -4 3 -2 -2 0 -5
0 0 0 0 1 1 2 3 5 -2 -2 -3 -4 -5 -5
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота