Ще запазим броя автобусни линии в глобална константа LINES и максималния брой спирки в глобална константа MAX_STOPS. Не ни е дадена връзка между посока на пътуване на автобусите. Ще допуснем, че те не са значими за нашето решение. int maxSeatsTaken(int gettingOn[MAX_STOPS], int gettingOff[MAX_STOPS]); Линейно итерираме през gettingOn и gettingOff едновременно (един цикъл с един индекс). Започвайки от първата спирка (на индекс 0), събираме броя хора, които са се качили и изваждаме броя които са слезли. Разликата добавяме в int променлива totalSeats, която се инициализира с 0. Аналогично пазим променлива maxSeats (също инициализирана на 0). На всяка итерация, след като добавим към totalSeats, проверяваме дали е повече от maxSeats. Ако е - записваме стойността в maxSeats. Накрая връщаме maxSeats. unsigned int seatsToBusSize(int seats); Дефинираме променлива busSize със стойност 14. С цикъл, докато busSize е по-малко от входните seats, добавяме 6 към busSize. Когато стигнем нужната бройка, цикъла спира и връщаме busSize. int main(); Декларираме две матрици, gettingOn и gettingOff, с размери LINES на MAX_STOPS. От входа получаваме, за всяка линия, първо броя спирки, след това алтерниращо колко хора се качват и колко хора слизат. Попълваме съответните стойности в двете матрици. Ако броя спирки е по-малко от максимума (17), тогава попълваме останалите клетки с нули. Итерираме през всички линии. За всяка линия, извикваме maxSeatsTaken, като подаваме съответните "подмасиви" от gettingOn и gettingOff на индекс текущата линия. Резултата го подаваме на seatsToBusSize и от него изкарваме размера на автобуса на екрана.