Help with code plsss

Joined
Aug 30, 2023
Messages
4
Reaction score
0
Here is the task:
Analyzing weekends and holidays around New Year's and May 1st in Russia, the president of Flatlandia has concluded that the rest of its citizens can be drastically optimized. The main goal is to ensure that citizens do not have to work more than 6 consecutive days in a calendar year. The president has instructed the Ministry of Labor to develop a schedule for transferring weekends (Saturdays and Sundays) so that citizens can have as many consecutive rest days as possible.

It is important to note that if a Flatlandian public holiday falls on a weekend (Saturday or Sunday), that holiday automatically moves to the first working day after the holiday. However, according to the president's decree, any weekend, whether it coincides with a public holiday or not, can be moved to any working day. Public holidays, however, are never moved.

Write a program that will help the Ministry of Labor create the required schedule for transferring weekends in the upcoming year. Public holidays and weekends from the previous and following year should not be considered. The objective is to maximize the number of consecutive rest days in one year.

Input Format:

The first line of input contains two numbers - the year number (Y) (2012≤Y≤2050) and the day of the week for January 1st of that year (W) (1≤W≤7, from Monday to Sunday). In this range of years, leap years are divisible by 4.

The second line contains the number of annual public holidays (N) in Flatlandia. Each of the following N lines contains the date of the next holiday in the format DD.MM. The holiday dates are listed in chronological order, and all dates are valid and correct for the given year.

Output Format:

Output a single number - the maximum possible number of consecutive days off for the residents of Flatlandia in the specified year if the weekends are moved so that the number of consecutive working days in this year does not exceed 6.

Example:

Input:

2012 7

1

01.01

Output:

63


My try:
import datetime

def is_leap_year(year):
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
return True
else:
return False
else:
return True
else:
return False

def get_weekday(year, month, day):
date = datetime.date(year, month, day)
return date.weekday()

def get_weekdays_in_year(year):
weekdays = [0, 0, 0, 0, 0, 0, 0] # Sunday to Saturday
for month in range(1, 13):
days_in_month = 31
if month == 4 or month == 6 or month == 9 or month == 11:
days_in_month = 30
elif month == 2:
if is_leap_year(year):
days_in_month = 29
else:
days_in_month = 28
for day in range(1, days_in_month + 1):
weekday = get_weekday(year, month, day)
weekdays[weekday] += 1
return weekdays

def get_maximum_consecutive_holidays(year, start_weekday, holidays):
weekdays = get_weekdays_in_year(year)
consecutive_holidays = 0
current_consecutive_holidays = 0
for holiday in holidays:
day, month = map(int, holiday.split('.'))
weekday = get_weekday(year, month, day)
if weekdays[weekday] == 0: # Weekday is not already a holiday
current_consecutive_holidays += 1
else:
current_consecutive_holidays = 0
weekdays[weekday] += 1
if current_consecutive_holidays > consecutive_holidays:
consecutive_holidays = current_consecutive_holidays
return consecutive_holidays


year, start_weekday = map(int, input().split())
num_holidays = int(input())
holidays = []
for _ in range(num_holidays):
holiday = input()
holidays.append(holiday)

maximum_consecutive_holidays = get_maximum_consecutive_holidays(year, start_weekday, holidays)

print(maximum_consecutive_holidays)

But uhhh, it doesn't complete the first test, help plzz
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,529
Members
45,001
Latest member
Kendra00E1

Latest Threads

Top