Advertisement
ahmed19981973

Untitled

Feb 2nd, 2019
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.73 KB | None | 0 0
  1. static int truckTour(int[][] petrolpumps) {
  2.         ArrayDeque<Integer> amount = new ArrayDeque<>(petrolpumps.length);//amount off given petrol
  3.         ArrayDeque<Integer> dist = new ArrayDeque<>(petrolpumps.length);//distance between two pump
  4.         /**
  5.          * indexes off element order change in the same order(Same phase) in all times
  6.          * ...so we can get the index off the start pump in any time
  7.          */
  8.         ArrayDeque<Integer> indexs = new ArrayDeque<>(petrolpumps.length);//index off pump
  9.         fill(petrolpumps, amount, dist, indexs);
  10.         int minIndex = dist.size();
  11.         for (int i = 0; i < amount.size(); i++) {
  12.             //remain petrol after consumption due to distance ..the remain may be consumpted in next distance
  13.             int remainpetrol = 0;
  14.             amount.add(amount.poll());
  15.             dist.add(dist.poll());
  16.             indexs.add(indexs.poll());
  17.             Object a[] = amount.toArray();
  18.             Object b[] = dist.toArray();
  19.             boolean state = true;
  20.             for (int j = 0; j < a.length && state; j++) {
  21.                 remainpetrol += (Integer) a[j] - (Integer) b[j];
  22.                 if (remainpetrol >= 0)
  23.                     state = true;
  24.                 else
  25.                     state = false;
  26.             }
  27.             if (state && indexs.peek() <= minIndex)
  28.                 minIndex = indexs.peek();
  29.  
  30.         }
  31.         return minIndex;
  32.     }
  33.  
  34.     private static void fill(int[][] p, ArrayDeque<Integer> amount, ArrayDeque<Integer> dist,
  35.                              ArrayDeque<Integer> indexs) {
  36.         for (int i = 0; i < p.length; i++) {
  37.             indexs.add(i);
  38.             amount.add(p[i][0]);
  39.             dist.add(p[i][1]);
  40.         }
  41.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement