Advertisement
Guest User

Untitled

a guest
Jul 20th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.31 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3. public class GuardMark {
  4.     public static void main(String[] args) throws IOException {
  5.         BufferedReader br = new BufferedReader(new FileReader("guard.in"));
  6.         PrintWriter pw = new PrintWriter(new File("guard.out"));
  7.         int[] line = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
  8.         int cows = line[0], height = line[1], res = 0;
  9.         int[] h = new int[cows], w = new int[cows], s = new int[cows];
  10.         boolean reached = false;
  11.         for (int i = 0; i < cows; i ++) {
  12.             line = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
  13.             h[i] = line[0];
  14.             w[i] = line[1];
  15.             s[i] = line[2];
  16.         }
  17.         int[] dp = new int[1 << cows], hdp = new int[1 << cows];
  18.         Arrays.fill(dp, Integer.MAX_VALUE);
  19.         for (int i = 1; i < dp.length; i ++) {
  20.             int best = 0;
  21.             for (int j = 0; j < cows; j ++)  {
  22.                 int m = 1 << j, q = i & m;
  23.                 if (q != 0 && Math.min(s[j], dp[i ^ m] - w[j]) > best) {
  24.                     best = Math.min(s[j], dp[i ^ m] - w[j]);
  25.                     hdp[i] = hdp[i ^ m] + h[j];
  26.                 }
  27.             }
  28.             dp[i] = best;
  29.             if (hdp[i] >= height) {
  30.                 res = Math.max(res, dp[i]);
  31.                 reached = true;
  32.             }
  33.         }
  34.         if (reached)
  35.             pw.println(res);
  36.         else
  37.             pw.println("Mark is too tall");
  38.         br.close();
  39.         pw.close();
  40.         System.exit(0);
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement