You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.0 KiB
Java

import java.util.*;
import java.util.stream.IntStream;
class Solution {
public static void main( String[] args ) {
// read values with in.next...() methods
var prices = new Scanner( System.in ).tokens()
.mapToInt( Integer::valueOf )
.toArray();
// code your solution here
var maxSum = IntStream.range( 2, prices.length - 1 )
.map( sellIndex -> {
var firstRange = Arrays.copyOfRange( prices, 0, sellIndex );
var secondRange = Arrays.copyOfRange( prices, sellIndex - 1, prices.length );
return maxProfit( firstRange ) + maxProfit( secondRange );
})
.max().orElse( 0 );
// Write result with System.out.println()
System.out.println( maxSum );
}
private static int maxProfit( int[] prices ){
return IntStream.range( 0, prices.length )
.map( index -> {
var range = Arrays.copyOfRange( prices, index, prices.length );
var max = IntStream.of( range ).max().orElse( 0 );
// difference between current price and future maximum
return max - prices[index];
})
.max().orElse( 0 );
}
}