Guest User

Untitled

a guest
Jan 26th, 2018
45
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. /**
  6.  * Created by bugkiller on 23/01/18.
  7.  */
  8.  
  9. class VideoGame {
  10.  
  11.     static int a[] = new int[100000];
  12.     static int commands[] = new int[100000];
  13.     static final int HOLDING = 1;
  14.     static final int EMPTY = 0;
  15.  
  16.     public static void main(String[] args) throws IOException {
  17.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  18.         int n, h, commandLength = 0;
  19.         String[] s;
  20.         s = br.readLine().split("\\s");
  21.         n = Integer.parseInt(s[0]);
  22.         h = Integer.parseInt(s[1]);
  23.         s = br.readLine().split("\\s");
  24.         for (int i = 0; i < n; i++) {
  25.             a[i] = Integer.parseInt(s[i]);
  26.         }
  27.         s = br.readLine().split("\\s");
  28.         for (int i = 0; i < s.length; i++) {
  29.             commands[i] = Integer.parseInt(s[i]);
  30.             if (commands[i] == 0) {
  31.                 commandLength = i + 1;
  32.                 break;
  33.             }
  34.         }
  35.         System.out.println(solve(a, commands, h, n, commandLength));
  36.     }
  37.  
  38.     private static String solve(int[] a, int[] commands, int h, int n, int commandLength) {
  39.         int cranePosition = 0, craneStatus = EMPTY;
  40.         boolean finished = false;
  41.         for (int i = 0; (i < commandLength) && !finished; i++) {
  42.             switch (commands[i]) {
  43.                 case 0:
  44.                     finished = true;
  45.                     break;
  46.                 case 1:
  47.                     if (cranePosition > 0) {
  48.                         cranePosition--;
  49.                     }
  50.                     break;
  51.  
  52.                 case 2:
  53.                     if (cranePosition < commands.length - 1) {
  54.                         cranePosition++;
  55.                     }
  56.                     break;
  57.  
  58.                 case 3:
  59.                     if (craneStatus == EMPTY && a[cranePosition] > 0) {
  60.                         craneStatus = HOLDING;
  61.                         a[cranePosition]--;
  62.                     }
  63.                     break;
  64.  
  65.                 case 4:
  66.                     if (craneStatus == HOLDING && a[cranePosition] < h) {
  67.                         craneStatus = EMPTY;
  68.                         a[cranePosition]++;
  69.                     }
  70.                     break;
  71.             }
  72.         }
  73.         StringBuilder sbr = new StringBuilder();
  74.         for (int i = 0; i < n; i++) {
  75.             sbr.append(a[i]).append(" ");
  76.         }
  77.         sbr.deleteCharAt(sbr.length() - 1);
  78.         return sbr.toString();
  79.     }
  80.  
  81. }
RAW Paste Data