Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.75 KB | None | 0 0
  1. public class Main {
  2.  
  3.     private int pitStart = -1, pitCenter = -1, pitFinish = -1;
  4.  
  5.     public static void main(String[] args) {
  6.         int[] a = {0, 1, 3, -2, 0, 1, 0, -3, 2, 3};
  7.         System.out.println("Result: " + new Main().solution(a));
  8.     }
  9.  
  10.     private void startPit( int index){
  11.         pitStart = index;
  12.         System.out.printf("pit start: %s\n", pitStart);
  13.     }
  14.  
  15.     private int finishPit( int[] a, int i){
  16.         pitFinish = i;
  17.         System.out.printf("pit start: %s, pit centre: %s, pit finish: %s\n", pitStart, pitCenter, pitFinish);
  18.  
  19.         int d =  Math.min( a[pitStart] - a[pitCenter], a[pitFinish] -  a[pitCenter]);
  20.         clearPit();
  21.         return d;
  22.     }
  23.  
  24.     public int solution(int[] a) {
  25.         int depth = -1;
  26.  
  27.         for (int i = 0; i < a.length - 1; i++) {
  28.  
  29.             if (a[i] >= a[i + 1] && isRising()) {
  30.                 depth = Math.max(depth, finishPit(a, i));
  31.             }
  32.  
  33.             if (a[i] > a[i + 1] && pitStart < 0) {
  34.                 startPit(i);
  35.             }
  36.  
  37.             if (a[i] < a[i + 1] && isDescending()) {
  38.                 centerPit(i);
  39.             }
  40.  
  41.             if (a[i] == a[i + 1]) {
  42.                 clearPit();
  43.             }
  44.         }
  45.  
  46.         if (isRising()) {
  47.             depth = Math.max(depth, finishPit(a, a.length - 1));
  48.         }
  49.         return depth;
  50.     }
  51.  
  52.     private boolean isDescending() {
  53.         return pitCenter < 0 && pitStart >= 0;
  54.     }
  55.  
  56.     private boolean isRising() {
  57.         return pitStart >= 0 && pitCenter >= 0;
  58.     }
  59.  
  60.     private void clearPit() {
  61.         pitStart = pitCenter = pitFinish = -1;
  62.     }
  63.  
  64.     private void centerPit(int i) {
  65.         pitCenter = i;
  66.         System.out.printf("pit centre: %s\n", pitCenter);
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement