class FindMaxProfit
{
public static void main
( String [ ] args
) {
int arr[ ] = { 100 , 80 , 260 , 310 , 40 , 535 , 695 } ;
printMaxProfitPairs( arr) ;
int [ ] anotherArr = { 23 , 13 , 25 ,29 ,33 ,19 ,34 , 45 , 65 , 67 } ;
printMaxProfitPairs( anotherArr) ;
}
private static void printMaxProfitPairs( int [ ] arr)
{
final int length = arr.length ;
if ( length <= 1 )
{
System .
out .
println ( "Not enough elements to process" ) ; return ;
}
int totalProfit = 0 ;
for ( int i = 0 ; i < length; )
{
int maxSoFar = arr[ i] ;
int min = arr[ i] ;
while ( ++ i < length && arr[ i] > maxSoFar) {
maxSoFar = arr[ i] ;
}
totalProfit += ( maxSoFar - min) ;
System .
out .
println ( "Max profit by buying at : " + min + " And selling at : " + maxSoFar) ;
}
System .
out .
println ( "Total profit :" + totalProfit
) ; }
}
Y2xhc3MgRmluZE1heFByb2ZpdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQoJewoJCWludCBhcnJbXSA9IHsxMDAsIDgwLCAyNjAsIDMxMCwgNDAsIDUzNSwgNjk1fTsKCQlwcmludE1heFByb2ZpdFBhaXJzKGFycik7CgoJCWludFtdIGFub3RoZXJBcnIgPSB7MjMsIDEzLCAyNSAsMjkgLDMzICwxOSAsMzQsIDQ1LCA2NSwgNjd9OwoJCXByaW50TWF4UHJvZml0UGFpcnMoYW5vdGhlckFycik7CgoJfQoKCXByaXZhdGUgc3RhdGljIHZvaWQgcHJpbnRNYXhQcm9maXRQYWlycyhpbnRbXSBhcnIpCgl7CgkJZmluYWwgaW50IGxlbmd0aCA9IGFyci5sZW5ndGg7CgkJaWYgKGxlbmd0aCA8PSAxKQoJCXsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJOb3QgZW5vdWdoIGVsZW1lbnRzIHRvIHByb2Nlc3MiKTsKCQkJcmV0dXJuOwoJCX0KCQkKCQlpbnQgdG90YWxQcm9maXQgPTAgOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyApCgkJewoJCQlpbnQgbWF4U29GYXIgPSBhcnJbaV07CgkJCWludCBtaW4gPSBhcnJbaV07CgkJCXdoaWxlICgrK2kgPCBsZW5ndGggJiYgYXJyW2ldID4gbWF4U29GYXIpewoJCQkJbWF4U29GYXIgPWFycltpXTsKCQkJfQoJCQkKCQkJdG90YWxQcm9maXQgKz0gKG1heFNvRmFyIC0gbWluKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJNYXggcHJvZml0IGJ5IGJ1eWluZyBhdCA6ICIgKyAKCQkJCQkJbWluICsgIiBBbmQgc2VsbGluZyBhdCA6ICIgKyBtYXhTb0Zhcik7CgkJfQoJCVN5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgcHJvZml0IDoiK3RvdGFsUHJvZml0KTsKCX0KfQ==