/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static final int [ ] [ ] DATA = {
{ 0 , 11 , 3 , - 2 , 0 , 1 , 0 , - 3 , 2 , 3 } ,
{ } ,
{ 1 } ,
{ 1 ,10 } ,
{ 10 ,1 } ,
{ 1 , 0 , 0 ,0 ,0 ,0 ,10 ,20 } ,
{ - 1 , 0 , 0 ,0 ,0 ,0 ,- 10 ,- 20 } ,
} ;
public static void main
( String [ ] args
) { for ( int [ ] d : DATA) {
System .
out .
printf ( "Deepest pit in %s is %d\n " ,
Arrays .
toString ( d
) , deepest
( d
) ) ; }
}
private static int deepest( int [ ] data) {
if ( data.length < 1 ) {
return 0 ;
}
int inflection = 0 ;
int max = 0 ;
int descent = 0 ;
boolean ascending = true ;
for ( int i = 1 ; i < data.length ; i++ ) {
boolean goingup = data[ i] == data[ i - 1 ] ? ascending : data[ i] >= data[ i - 1 ] ;
if ( goingup != ascending) {
ascending = goingup;
descent = ascending ? ( data[ inflection] - data[ i - 1 ] ) : 0 ;
inflection = i - 1 ;
}
max
= Math .
max ( max,
Math .
min ( descent, data
[ i
] - data
[ inflection
] ) ) ; }
return max;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdW10gREFUQSA9IHsKCQkJeyAwLCAxMSwgMywgLTIsIDAsIDEsIDAsIC0zLCAyLCAzIH0sCgkJCXt9LAoJCQl7MX0sCgkJCXsxLDEwfSwKCQkJezEwLDF9LAoJCQl7MSwgMCwgMCwwLDAsMCwxMCwyMH0sCgkJCXstMSwgMCwgMCwwLDAsMCwtMTAsLTIwfSwKCQl9OwoJCgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQlmb3IgKGludFtdIGQgOiBEQVRBKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRmKCJEZWVwZXN0IHBpdCBpbiAlcyBpcyAlZFxuIiwgQXJyYXlzLnRvU3RyaW5nKGQpLCBkZWVwZXN0KGQpKTsKCQl9Cgl9CgoJcHJpdmF0ZSBzdGF0aWMgaW50IGRlZXBlc3QoaW50W10gZGF0YSkgewoJCQoJCWlmIChkYXRhLmxlbmd0aCA8IDEpIHsKCQkJcmV0dXJuIDA7CgkJfQoJCQoJCWludCBpbmZsZWN0aW9uID0gMDsKCQlpbnQgbWF4ID0gMDsKCQlpbnQgZGVzY2VudCA9IDA7CgkJYm9vbGVhbiBhc2NlbmRpbmcgPSB0cnVlOwoJCWZvciAoaW50IGkgPSAxOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgewoJCQlib29sZWFuIGdvaW5ndXAgPSBkYXRhW2ldID09IGRhdGFbaSAtIDFdID8gYXNjZW5kaW5nIDogZGF0YVtpXSA+PSBkYXRhW2kgLSAxXTsKCQkJaWYgKGdvaW5ndXAgIT0gYXNjZW5kaW5nKSB7CgkJCQlhc2NlbmRpbmcgPSBnb2luZ3VwOwoJCQkJZGVzY2VudCA9IGFzY2VuZGluZyA/IChkYXRhW2luZmxlY3Rpb25dIC0gZGF0YVtpIC0gMV0pIDogMDsKCQkJCWluZmxlY3Rpb24gPSBpIC0gMTsKCQkJfQoJCQkKCQkJbWF4ID0gTWF0aC5tYXgobWF4LCBNYXRoLm1pbihkZXNjZW50LCBkYXRhW2ldIC0gZGF0YVtpbmZsZWN0aW9uXSkpOwoJCX0KCQlyZXR1cm4gbWF4OwoJfQp9
stdout
Deepest pit in [0, 11, 3, -2, 0, 1, 0, -3, 2, 3] is 4
Deepest pit in [] is 0
Deepest pit in [1] is 0
Deepest pit in [1, 10] is 0
Deepest pit in [10, 1] is 0
Deepest pit in [1, 0, 0, 0, 0, 0, 10, 20] is 1
Deepest pit in [-1, 0, 0, 0, 0, 0, -10, -20] is 0