Ще запазим броя етажи като глобална константа на име FLOORS (и стойност 5). По условие е казано, че асансьор се качва по-бързо отколкото слиза. Ще допуснем, че разликата в скоростите е малка. Допълнително се изисква да приоритизираме скорост. От тези факти, следва че когато два бутона на еднакво разстояние от един асансьор са натиснати, то асансьора трябва да приоритизира по-горния етаж. Също не е казано в какъв формат ни се подават етажите на асансьорите. Избираме следния format: от 0 до FLOORS-1 вкл. се обозначават етажите, като 0 обозначава партер. unsigned int newElevatorPosition(bool buttonsPressed[FLOORS], unsigned int currentPosition); Функцията newElevatorPosition ще върне новата позиция на асансьора по следния начин: започваме от текущата позиция и с цикъл постепенно инкрементираме стойност "distance". На всяка итерация ще проверяваме дали на съответния горен и долен етаж (текуща позиция + distance и текуща позиция - distance) е натиснат бутон. При всяка такава проверка, ще погледнем дали получения етаж е валиден (индекс в buttonsPressed). Ако етажа е валиден и на него е натиснат бутон, директно връщаме етажа. Първо правим проверката за горния етаж, след това за долния, така имплементираме решението на проблема с двата натиснати бутона на еднакво разстояние, който анализирахме по-рано. distance ще се мени от 0 до FLOORS-1 вкл. и ако не намерим етаж с натиснат бутон, просто връщаме текущата позиция. Понеже distance в началото ще е 0, това покрива случая когато бутон е натиснат на текущия етаж. int main(); Декларираме булев масив с FLOORS на брой елемента и го попълваме с входни данни. Декларираме и попълваме два индекса (от тип unsigned int), които ще съдържат позицията на двата асансьора. Извикваме newElevatorPosition, като подаваме булевия масив и текущата позиция на първия асансьор. Върнатия резултат го изкарваме на екрана и на същата позиция в булевия масив, записваме че бутона не е натиснат. Аналогично, отново извикваме newElevatorPosition, с (обновения) булев масив и позицията на втория асансьор. Резултата го изкарваме.