Задача "02. Hospital" от "For-Loop - More Exercises" от "PB-More-Exercises".
https://judge.softuni.bg/Contests/Practice/Index/1680#1 - линк към задачата.
https://softuni.bg/downloads/svn/programming-basics-v4/course-content/course-resources/More%20Exercises/5.%20PB-More-For-Loop-Exercises.docx - линк към условието
Който е решавал Задача "02. Hospital" от "For-Loop - More Exercises" от "PB-More-Exercises".
Не може да не е забелязал, че вярното решение на задачата според "judge" е напълно не логично.
По-условие: „Всеки трети ден, болницата прави изчисления и ако броят на не прегледаните пациенти е по-голям от броя на прегледаните, се назначава още един лекар.“
От така написаното условие е логично, че на всеки три дни би трябвало да се сравнява броя на прегледаните пациенти и броя на не прегледаните пациенти. След което бройката да се нулира, за да се провери за следващите три дни и т.н.
Да, обаче ако напишете кода така, системата за оценяване ви дава грешка. За да я преодолеете се оказва, че трябва да сравнявате броя на прегледаните пациенти и броя на не прегледаните пациенти не за последните три дни, а като цяло, но просто на всеки 3 дни.
Което е абсолютно безсмислено, защото ако приемем, че имате 7 лекаря в началото и първия ден имате 100 пациента а на следващите 90 дни 0, вие на всеки 3 дни ще си правите проверката и тя ще показва, че трябва да назначите нов лекар и така накрая ще имате 37 лекаря при 90 дни никакви пациенти.
Когато видя една задача аз си представям, какво се иска от мен, мислейки логично. А решението на тази задача противостои на здравата логика, защото не е логично да назначаваш нови лекари, при положение, че нямаш нужда от тях. Затова и задачата ми не мина с първото – логичното решение, а със второто – не логичното решение.
days = int(input())
doctors = 7
treated_patients = 0
untreated_patients = 0
for period in range(1, days + 1):
patients_per_day = int(input())
if period % 3 == 0:
if untreated_patients > treated_patients:
doctors +=1
if patients_per_day <= doctors:
treated_patients += patients_per_day
else:
treated_patients += doctors
untreated_patients += (patients_per_day - doctors)
print(f'Treated patients: {treated_patients}.')
print(f'Untreated patients: {untreated_patients}.')