  InterviewBit Academy is now Scaler Academy! # Best Time to Buy and Sell Stock with Cooldown

Given an array of integers A of size N in which ith element is the price of the stock on day i,

You may complete as many transactions
as you like (ie, buy one and sell one share of the stock multiple times) with the following restrictions:

• You may not engage in multiple transactions at the same time (i.e. you must sell the stock before you buy again).
• After you sell your stock, you cannot buy stock on next day. (i.e. cooldown 1 day)

Find the maximum profit you can achieve.

Input Format

``````The only argument given is the integer array A.
``````

Output Format

``````Return the maximum profit you can achieve.
``````

Constraints

``````1 <= N <= 50000
0 <= A[i] <= 10^6
``````

For Example

``````Input 1:
A = [1, 2, 3, 0, 2]
Output 1:
3
Explanation 1:
Buy on day 1 (price = 1) and sell on day 2 (price = 2), profit = 1
cooldown on day 3
Buy on day 4 (price = 0) and sell on day 5 (price = 2) profit = 2
Total profit = 3.

Input 2:
A = [1, 2, 3, 1]
Output 2:
2
Explanation 2:
Buy on day 1 (price = 1) and sell on day 3 (price = 3), profit = 2
Total Profit = 2
``````
NOTE: You only need to implement the given function. Do not read input, instead use the arguments to the function. Do not print the output, instead return values as specified. Still have a doubt? Checkout Sample Codes for more details. 