- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Program to find out the farthest building a parkour artist can reach in Python

Suppose, there are n number of houses of different heights and a parkour artist wants to go from one house to another with help of some bricks and ladders. The heights of the houses are given to us as an array. Each brick is a unit length tall and we are given a handful of those. We can use the ladders and the bricks only once. We have to find out the furthest building the parkour artist can go to.

So, if the input is like heights = [5, 8, 7, 6, 2, 3, 1, 4], bricks = 3, ladders = 2, then the output will be 7.

The artist starts from building 0.

He reaches building 1 with the help of the 3 bricks.

He jumps to building 2, 3, 4 as the successor buildings are shorter than the predecessor ones.

He uses a ladder to go from building 4 to building 5.

He jumps from building 5 to building 6 as building 6 is shorter.

He uses the last ladder to reach building 7.

To solve this, we will follow these steps −

temp := a new heap

for i in range 1 to size of heights, do

dist := heights[i] - heights[i - 1]

if dist > 0, then

bricks := bricks - dist

push value -dist to the heap temp

if bricks < 0, then

ladders := ladders - 1

bricks := bricks - the smallest element removed from heap temp

if bricks < 0 or ladders < 0, then

return i - 1

return size of heights - 1

## Example

Let us see the following implementation to get better understanding −

from heapq import heappush, heappop def solve(heights, bricks, ladders): temp = [] for i in range(1, len(heights)): dist = heights[i] - heights[i - 1] if dist > 0: bricks -= dist heappush(temp, -dist) if bricks < 0: ladders -= 1 bricks -= heappop(temp) if bricks < 0 or ladders < 0: return i - 1 return len(heights) - 1 print(solve([5, 8, 7, 6, 2, 3, 1, 4], 3, 2))

## Input

[5, 8, 7, 6, 2, 3, 1, 4], 3, 2

## Output

7

- Related Questions & Answers
- Program to find out the shortest path to reach the goal in Python
- C++ program to find out the center coordinates and the height of a building
- Program to Find Out the Number of Moves to Reach the Finish Line in Python
- Program to find maximum building height in Python
- Program to find out the minimum number of moves for a chess piece to reach every position in Python
- C++ Program to find how many pawns can reach the first row
- Program to Find Out the Minimal Submatrices in Python
- Program to find minimum jumps to reach home in Python
- Program to find number of ways we can reach to the next floor using stairs in Python
- Python Program to find out the number of rooms in which a prize can be hidden
- C++ Program to find out the number of jumps needed for a robot to reach a particular cell in a grid
- Program to Find Out the Special Nodes in a Tree in Python
- Program to Find Out the Points Achievable in a Contest in Python
- Program to find out the inheritance order in a family in Python
- Program to find out the palindromic borders in a string in python