Submission #1087912

#TimeUsernameProblemLanguageResultExecution timeMemory
1087912vjudge1Linear Garden (IOI08_linear_garden)C++17
100 / 100
506 ms2552 KiB
// Author: Ivan Teo // Created: Fri Sep 13 19:25:31 2024 #define TASKNAME "dpdick" /* ⣿⣧⢿⣏⢻⣿⣦⣿⣿⣿⣿⣏⣿⣿⣾⣿⣿⣿⣾⣿⣿⣻⣿⣿⢿⡿⣿⢹⠁⢹⣾⣷⣧⣿⢽⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣏⣶⣿⣿⣿⣿⣿⣯⣿⣿⣿⣿⣿⣧⣿⣿⣏ ⣿⣿⡜⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣯⣿⣿⣿⣿⢾⣿⣿⣾⡇⢸⣿⣿⣿⣿⢽⣿⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿ ⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⣿⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠓⠈⣫⠝⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠁⠁⠃⠸⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⠃⠋⠁⣠⠞⠁⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠹⠻⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⡝⢇⠔⢃⠜⠁⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠲⣴⠏⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡿⢹⢔⣵⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡻⣷⣾⢻⣿⣿⣿⣿⣿⣿⣿⡿⣿ ⣿⣿⣿⣿⣿⣿⡟⢧⣷⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡻⡿⣾⢿⣿⣿⣿⣿⣿⣿⢣⣯ ⢸⣿⣿⣿⣿⣿⣣⣫⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⣿⣿⣦⣻⣿⣿⣿⣿⣿⣴⣿ ⣿⣿⣿⣿⣿⢙⠝⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠃⢷⡿⣟⣽⣿⣿⣿⣷⣿⣿ ⣾⣿⣿⡿⠉⢊⣾⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣜⠉⢻⣿⣿⣿⣿⡾ ⣿⣿⣿⡇⠀⢠⣏⣽⠀⠀⠀⠀⠀⠀⢤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⢸⣿⣿⣿⣿⢣ ⣿⣿⣿⡇⠀⢈⣷⢹⠀⡇⠀⠀⠀⢀⣀⣹⣮⠉⠑⠴⠖⠢⠤⠤⠄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠤⠤⠤⠒⠒⢈⣉⣥⣖⣀⠀⠀⠀⠀⢀⠀⠀⣸⣇⠀⢸⣿⣿⣿⡟⠘ ⣿⣿⣿⡇⢠⣿⣿⢠⢠⣇⠀⠀⠀⠀⠀⠈⢿⢿⡷⣦⣉⠱⢍⣀⡀⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⢀⣠⠤⢐⣾⠿⣿⠟⠉⠀⠀⠀⠀⢻⣞⣄⠀⢿⣿⡀⠘⣿⣿⣿⣿⣰ ⣿⣿⣿⡇⢸⢸⣿⡼⢸⡿⠁⢀⣤⠤⠖⠒⠲⠾⣿⣦⡍⠓⣄⠈⠉⠉⢿⡄⠀⠀⠀⠀⠀⠀⠀⢀⣾⠋⠉⠁⠀⠖⠉⣡⣮⡷⠖⠒⠲⠦⠤⣠⠄⢻⣿⠀⢸⣿⣇⠀⣿⣿⣿⣿⡁ ⣿⣿⣿⣇⣿⣼⡿⣱⣿⣧⠾⠛⠁⠀⠀⠲⠖⠒⠠⣌⡛⢦⡈⠀⡈⠂⠘⣿⠀⠀⠀⠀⠀⠀⢀⣾⠏⠐⠂⡀⣺⣶⢟⣫⠤⠐⠒⠂⠀⠀⠀⠉⠓⢦⣿⣦⣸⣿⣿⡇⣿⣿⣿⣿⣧ ⣿⣿⣿⣿⣿⣟⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠈⠢⡛⣦⢳⣄⠀⠘⢧⠀⠀⠀⠀⠀⢰⠏⠀⢀⣜⣿⣿⡵⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣝⣿⡇⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⡿⣼⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⠈⣗⢻⣤⣉⡉⣇⠀⠀⠀⢠⠏⣉⡥⡿⢿⢿⣹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⢿⣯⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⣀⣠⣤⣤⣤⣤⣤⣀⡀⠀⠀⠂⡌⡇⢳⡀⠉⢹⡉⠉⠉⡟⠉⠀⣼⠁⡇⠆⢀⠀⠀⣀⣤⣤⣤⣤⣤⣄⣀⡀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⡿⠋ ⠘⢿⣿⡟⢻⣿⣷⣤⣤⣴⣾⣿⣿⣿⠿⠟⠛⠛⠿⠿⣿⣷⣦⣀⠘⠄⢿⡿⢤⠈⢃⡆⣒⠹⢁⣖⡇⠀⠂⢀⣬⣾⣿⡿⠿⠟⠛⠻⠿⣿⣿⣿⣿⣦⣤⣤⣽⣿⣿⢻⣿⣿⠟⣠⡴ ⢳⣸⣿⠁⠮⣿⣿⣿⣿⣿⣿⡿⠋⠁⢀⣠⣤⣤⣄⡀⠈⠹⢿⣿⣷⡄⣸⣹⡏⠀⢸⣿⡇⠀⢸⣿⢣⢀⣴⣿⣿⠟⠉⠀⣀⣤⣤⣤⣀⠀⠙⢿⣿⣿⣿⣿⣿⣿⡯⡂⢿⣧⣼⣋⣤ ⣝⣿⡟⢀⣹⣿⣿⣿⣿⣿⡿⠁⠀⡰⢿⣿⣿⣿⣿⣿⣦⠀⠈⢿⣿⣿⣾⡟⠀⣀⢼⠟⣿⣄⡀⠹⣷⣿⣿⡿⡇⠀⢀⣾⣿⣿⣿⣿⣿⣷⡄⠀⢹⣿⣿⣿⣿⣿⣿⣁⢸⣿⣟⠟⢳ ⢸⣿⠃⢠⢽⣽⢿⣿⣿⣿⡇⠄⠀⣿⣿⣿⡁⠈⣿⣿⣿⡆⠀⢘⣿⣿⡿⠛⠛⢛⣉⡉⣉⡛⠛⠛⢿⣿⣿⡇⠧⠀⢸⣻⣿⣏⠀⣹⣿⣿⡧⠀⢸⣿⣿⣿⣿⢟⡟⠉⠉⣿⣯⠀⣸ ⢸⣿⠠⠆⢨⣻⣿⣟⢿⣿⣿⡀⠀⢻⣿⣿⣿⣿⣿⣿⡟⠀⠀⣼⣿⣿⣿⢶⣛⣿⣷⣖⣶⣿⣟⣷⢾⣿⣿⣷⡀⠀⠘⢿⣿⣿⣿⣿⣿⣿⠃⠀⣾⣿⣿⣿⠿⣫⠠⠂⠀⢹⣿⢀⡇ ⣿⡏⢰⠀⠀⠙⠶⠶⠾⣿⣿⣷⣄⠀⠉⠛⠻⠟⠛⠉⠀⣠⣾⣿⣿⣿⠟⠛⣉⣩⡀⠀⢀⣨⣉⡛⡿⣿⣿⣿⣷⣄⠀⠈⠙⠛⠿⠟⠋⠁⣠⣾⣿⣿⡿⠷⠾⠟⠁⠀⠀⢸⣿⡾⢠ ⣿⣇⢨⣇⠀⠀⠀⠈⡻⠶⢭⣿⣿⣿⣶⣦⣤⣤⣤⣶⣾⣿⣿⢿⣿⡟⡆⣸⣿⡿⠃⠀⠈⠻⣿⣷⠀⠹⣿⢿⣿⣿⣿⣶⣦⣤⣤⣴⣶⣿⣿⣿⡯⠷⣟⠃⠀⠀⠀⢰⡇⢰⣿⠀⡊ ⢹⣿⡸⣿⣆⠀⡀⠀⠺⢶⣖⣲⣤⣤⣼⣿⣿⣿⣿⣿⡿⣿⣟⡍⣿⡛⢰⣿⡟⠀⠀⠀⠀⠀⠹⣿⣧⢦⣻⣎⡈⠙⢿⣿⣿⣿⣿⣿⣽⣤⣤⡴⣲⠞⢃⣄⠀⠀⢠⡿⠁⣼⡿⢸⢹ ⣷⣿⣿⡷⡉⡻⣿⣿⡆⠀⠀⠈⠉⠁⠀⠀⢋⣉⣠⣶⠿⠟⢉⡼⠓⠁⣾⡟⠀⠀⠀⠀⠀⠀⠀⠹⣿⡄⠉⢿⣌⠻⠷⢦⣬⣉⡙⠁⠀⠁⠉⠉⣤⠔⢉⣿⣿⠟⠋⢀⣼⣿⣷⢿⣸ ⠈⠙⠿⣿⣷⡜⣜⣿⣿⢦⣤⣤⣀⣠⣴⣶⠿⠟⠋⠀⠀⠀⠋⠀⠀⢸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⠈⠛⠛⠀⠀⠀⠉⠛⢿⣷⣦⣤⣀⡄⣠⣠⣾⣿⡇⠀⢠⣾⡿⠛⠙⢸⣼ ⠀⠀⠀⢻⣿⣿⡄⣿⣿⡻⣯⣿⣿⠟⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠿⣿⣿⡋⠀⣿⣿⢁⣴⣿⣿⠁⠀⠀⣹⢸ ⠀⠀⠀⠸⣿⡿⣿⡹⣿⣷⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣾⣿⠟⣼⡿⣿⡏⠀⠀⠀⢸⢻ ⠤⣄⣄⡀⢻⣿⠈⢷⣀⠙⣿⣿⣿⣶⣤⣤⣄⣀⣀⣀⣀⣀⣀⣤⣤⣤⣶⣶⣾⣷⣦⣀⣤⣾⣷⣶⣶⣦⣤⣤⣀⣀⣀⣀⣀⣀⣀⣤⣤⣶⣾⣿⣿⠟⣡⡼⠏⣸⣿⢀⣀⣤⣤⣾⣻ ⠁⠈⠛⠙⢸⣿⡄⣎⡇⢳⣞⣿⣟⡟⠻⡟⢿⣿⣿⣿⣿⣿⣿⣷⣶⣾⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢻⡿⢛⢿⣿⡏⡰⢻⡇⣀⣿⡟⠉⢹⣿⡟⠙⠉ ⠀⠀⠀⠀⠠⢿⣷⢏⢧⠀⡎⣻⣿⣿⡄⣿⡀⢻⠁⠈⣿⠁⠙⣟⠁⠙⡿⠋⢻⡟⠛⢿⠟⠻⡿⠋⢻⡏⠀⢹⡏⠈⣻⠋⠈⣿⠁⣼⣄⣾⣿⡟⠀⠀⣾⠳⢻⣿⢡⠀⠈⢿⣷⡀⠀ ⠀⠀⠀⢠⠇⠸⣿⡘⣏⣇⠸⢳⢿⣿⣿⣿⣧⣸⣧⢠⣿⡇⢸⣿⠀⢰⣧⠀⣸⡇⢠⣿⡄⢠⣧⠀⣸⣇⠀⣸⣷⢠⣿⡇⢰⣿⣼⣿⣿⣿⣿⠃⠀⣸⠃⠀⣾⡿⠈⣆⠀⠈⠻⣿⣦ ⠀⢀⣾⠏⠀⠀⣿⣇⢸⣾⠀⡏⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⣿⣿⣦⣿⣷⣸⣿⣷⣼⣿⣧⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⢀⡿⠀⢰⣿⠇⠀⠘⣷⣄⡀⠈⠙ ⢔⡽⠃⠀⠀⢠⢻⣿⠈⡟⢢⢸⣼⣿⣿⣿⣿⣏⣿⠹⣿⢻⣿⢻⣿⢿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⡟⢿⡏⢻⢏⣷⣿⣿⣿⠇⢰⢸⠃⠀⣸⣿⢦⠀⠀⠈⠻⣿⣶⡤ ⠀⠀⠀⠀⣰⠏⠈⢿⣧⡸⡸⣟⣇⢹⣿⣿⣿⣿⣿⣶⣧⣠⣯⣀⣿⢘⡏⠘⡟⢻⡟⣿⠋⣿⢹⡏⢘⣇⣸⣇⣸⣅⣸⣷⣾⣿⣿⣿⣿⡿⢀⡿⠀⠀⣴⣿⠇⠘⣷⡀⠀⠀⠈⠙⠻ ⠀⠀⣠⣾⡏⠀⠀⠈⢻⣷⡕⢎⢹⣯⡛⢿⣿⣿⣿⣿⣿⡿⠿⣿⣿⣿⣿⣾⣿⣾⣷⣿⣶⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠁⡾⠁⢀⣼⡿⠃⠀⠀⠙⣿⣦⠀⠀⠀⠀ ⠀⢞⣿⠏⠀⠀⠀⠀⠀⠹⣿⣝⢆⠹⢇⠀⠉⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠋⠁⣠⡾⠁⢠⣾⡿⠁⠀⠀⠀⠀⠹⣿⣷⣦⡀⠀ ⠚⠋⠋⠀⠀⠀⠀⠀⠀⠀⢻⣿⣯⡳⡄⠕⠂⠀⠀⠀⠀⠉⠉⠛⠛⠛⠛⠛⠛⠛⠿⠿⠿⠟⠛⠛⠛⠛⠛⠛⠋⠉⠁⠀⠀⠀⠤⠚⠋⡴⣱⣿⢿⠁⠀⠀⠀⠀⠀⠀⢈⡿⠿⣿⣦ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⣯⢻⣷⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡿⢻⣇⠀⠀⠀⠀⠀⠀⠀⠩⢒⠀⠀⠉ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡟⡎⢻⣿⣦⡀⠀⠀⠀⢀⣤⡤⠖⢚⣃⣀⡤⠄⠀⠀⠀⠀⠀⠀⢤⣄⣈⣓⠒⠤⣤⣀⠀⠀⠀⢀⣰⣿⣿⢃⣾⡏⠀⠀⠀⠀⠀⠀⠀⠐⠉⠀⠀⠀ ⣍⠉⠛⠿⠷⣶⣶⣶⣶⣟⠯⠅⠸⣌⢿⣻⣿⡟⠓⠛⠋⠁⠒⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠓⠈⠉⠛⠛⢛⣿⣿⣿⣁⠞⢀⠥⣒⣶⣶⣶⣶⠾⠿⠟⠋⢁⣴⡾ ⠛⢷⣤⡀⡀⠀⠀⠀⠀⠀⠀⠀⠐⣼⡷⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⡿⣷⣟⠀⠐⠃⠀⠀⠀⠀⠀⠠⢒⣠⣾⠟⠁⠀ ⠀⠀⢉⡻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠘⢿⣳⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⡿⡟⡽⠋⠀⠀⠀⠀⠀⠀⠀⣀⣴⠟⣋⠴⣪⠄⠀ ⡄⠀⣠⢌⢷⢟⠻⢷⣦⢤⣀⠀⠀⠀⠀⠙⣿⣿⣮⢿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡿⣫⣿⣿⠟⠁⠀⠀⠀⢀⡠⣴⣾⠿⢋⡠⣚⣵⡮⠖⣾⡋ ⣇⠀⢈⣵⣶⣭⣛⠀⠙⣛⢾⣿⣖⣦⣀⡀⢘⣿⣿⣧⢻⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡿⣱⣿⣿⡋⠀⣀⣤⣶⣾⡿⠞⠋⡠⠖⣥⣾⣧⣅⠀⣠⣿⣿ ⣿⣿⡿⠭⠤⢹⣷⢈⡙⠂⠈⠓⠽⣮⠽⣿⠿⣿⣿⡝⣷⡹⣿⣅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡟⣽⢯⣾⣿⡿⣿⡿⢁⠋⠁⠀⠀⠁⡀⢸⣟⠀⠬⣿⣿⣿⣿⣿ ⣿⣾⣿⣧⣶⣟⣵⢶⣍⠲⢤⣀⠀⠈⠁⠠⠙⠺⣿⡃⠈⢳⡝⠻⢿⣶⣶⣤⣤⣤⣤⣀⣠⣤⣤⣤⣴⣶⣿⠿⢋⡾⠋⢨⣿⠿⠋⠥⠚⠁⠀⢀⣤⠖⣋⣵⢶⣝⣷⣜⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣶⣿⠁⠉⠳⠿⣦⣄⡀⠀⠀⠀⠉⠳⢦⡹⣄⠀⠀⢻⣏⠙⠛⠛⠛⠛⠛⠋⣩⡿⠁⠀⢠⠟⣠⠾⠋⠊⠀⠊⠀⣠⣴⠾⠗⠋⠀⣿⣧⣺⣿⣿⣿⣿⣿⣿⣿⣿ */ #include <bits/stdc++.h> using namespace std; #define fore(i, a, b) for (int i = (a); i <= (b); i++) #define ford(i, a, b) for (int i = (a); i >= (b); i--) #define int long long using vi = vector<int>; using ii = pair<int, int>; #define pb emplace_back #define fi first #define se second #define sz(v) ((int)v.size()) #define all(v) v.begin() + 1, v.end() #define alll(v) v.begin(), v.end() #define db(x) cerr << "[" << #x << " = " << x << "]" #define ell cerr << "\n=========================================\n" #define el cerr << '\n' #define Unique(v) v.erase(unique(alll(v)), v.end()) mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); int Rand(int l, int r) { assert(l <= r); return uniform_int_distribution<int> (l, r)(rng); } template<int D, typename T> struct Vec : public vector < Vec < D - 1, T >> { template<typename... Args> Vec(int n = 0, Args... args) : vector < Vec < D - 1, T >> (n, Vec < D - 1, T > (args...)) {} }; template<typename T> struct Vec<1, T> : public vector<T> { Vec(int n = 0, const T &val = T()) : vector<T>(n, val) {} }; inline int add(int x, int y, int mod) { x += y; if (x >= mod) x -= mod; return x; } const int N = 1e6 + 1; int dp[2][3][3][5][2]; void ivan() { int n, mod; cin >> n >> mod; string s; cin >> s; // Vec<5, int> dp(n, 3, 3, 5, 2, -1); function<int(int, int, int, int, int)> calc = [&](int i, int mx, int mn, int sum, bool tight) -> int { if (mx - mn > 2) return 0; if (sum > 2 || sum < -2) return 0; return dp[i & 1][mx][mn + 2][sum + 2][tight]; }; ford(i, n, 0) { fore(mx, 0, 2) fore(mn, -2, 0) if (mx - mn <= 2) fore(sum, -2, 2) fore(tight, 0, 1) { auto &res = dp[i & 1][mx][mn + 2][sum + 2][tight]; if (i == n) { res = 1; continue; } res = calc(i + 1, max(mx, sum + 1), mn, sum + 1, tight || (s[i] == 'P')); if (tight || s[i] == 'P') res = add(res, calc(i + 1, mx, min(mn, sum - 1), sum - 1, tight), mod); } memset(dp[i - 1 & 1], 0, sizeof(dp[i - 1 & 1])); } cout << calc(0, 0, 0, 0, 0); } signed main() { cin.tie(0)->sync_with_stdio(0); if (fopen("in", "r")) freopen("in", "r", stdin); if (fopen(TASKNAME".inp", "r")) { freopen(TASKNAME".inp", "r", stdin); freopen(TASKNAME".out", "w", stdout); } int tc = 1; // cin >> tc; while (tc--) ivan(); ell, cerr << "Execution Time: " << 1.0 * clock() / CLOCKS_PER_SEC << "s", ell; return 0; }

Compilation message (stderr)

linear_garden.cpp: In function 'void ivan()':
linear_garden.cpp:134:21: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
  134 |         memset(dp[i - 1 & 1], 0, sizeof(dp[i - 1 & 1]));
      |                   ~~^~~
linear_garden.cpp:134:46: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
  134 |         memset(dp[i - 1 & 1], 0, sizeof(dp[i - 1 & 1]));
      |                                            ~~^~~
linear_garden.cpp: In function 'int main()':
linear_garden.cpp:142:34: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  142 |     if (fopen("in", "r")) freopen("in", "r", stdin);
      |                           ~~~~~~~^~~~~~~~~~~~~~~~~~
linear_garden.cpp:145:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  145 |         freopen(TASKNAME".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
linear_garden.cpp:146:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  146 |         freopen(TASKNAME".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...