Algorithms and Data Structures

  • Profound Academy

    • Status
      • 1
        Implementation
      • 2
        Bitwise operations
      • 3
        Prefix Sums
      • 4
        Sliding window / Two pointers
      • 5
        Modular Arithmetic
      • 6
        Number Theory
      • 7
        Binary Search
      • 8
        Basic Sorting
      • 9
        Greedy Algorithms
      • 10
        Basic Dynamic Programming
      • 11
        Recursion
      • 12
        Linked LIst
      • 13
        Queue & Stack
      • 14
        Binary tree + BST
      • 15
        Divide & Conquer + Advanced Sorting
      • 16
        Heap
      • 17
        Hashing
      • 18
        Graph Representation
      • 19
        BFS

  • Staircase with a cost

    You’re climbing a staircase with n stairs. On each step, you can either climb 2 stairs or climb only 1. As you step on each stair, you pay a cost associated with that stair. Your task is to climb to the very top by paying as little as possible.

    Input

    The first line of the input contains a single integer n (1 ≤ n ≤ 1000).
    The next line contains the costs associated with each stair (0 ≤ ≤ 1000).

    Output

    The program should print the minimum cost to reach the top of the staircase.

    Examples

    Input
    Output
    3 10 12 25
    12
    10 1 20 1 1 1 20 1 2 20 1
    7

    Explanation

    1. We stand in front of the staircase ⇒ the current cost is 0. We step on the second staircase ⇒ the cost is 12. Then we get out of the staircase by doing a step of length 2 ⇒ cost remains 12.
    1. 1 20 1 1 1 20 1 2 20 1 ⇒ 1 20 1 1 1 20 1 2 20 1 ⇒ 1 20 1 1 1 20 1 2 20 1 ⇒ 1 20 1 1 1 20 1 2 20 1 ⇒ 1 20 1 1 1 20 1 2 20 1 ⇒ 1 20 1 1 1 20 1 2 20 1 ⇒ 1 20 1 1 1 20 1 2 20 1 ⇒ 7
     

    Constraints

    Time limit: 1 seconds

    Memory limit: 512 MB

    Output limit: 1 MB

    To check your solution you need to sign in
    Sign in to continue