niyaznigmatullin

Untitled

Oct 17th, 2014
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.90 KB | None | 0 0
  1.     static void solve() throws IOException {
  2.         long h = nextLong();
  3.         int a = nextInt();
  4.         int b = nextInt();
  5.         int c = nextInt();
  6.         final long[] d = new long[a];
  7.         Arrays.fill(d, Long.MAX_VALUE);
  8.         d[1 % a] = 1;
  9.         NavigableSet<Integer> q = new TreeSet<>(new Comparator<Integer>() {
  10.             @Override
  11.             public int compare(Integer o1, Integer o2) {
  12.                 if (d[o1] != d[o2]) {
  13.                     return Long.compare(d[o1], d[o2]);
  14.                 }
  15.                 return Integer.compare(o1, o2);
  16.             }
  17.         });
  18.         q.add(1 % a);
  19.         while (!q.isEmpty()) {
  20.             int v = q.pollFirst();
  21.             for (int e : new int[] { b, c }) {
  22.                 int u = (v + e) % a;
  23.                 if (d[u] > d[v] + e) {
  24.                     q.remove(u);
  25.                     d[u] = d[v] + e;
  26.                     q.add(u);
  27.                 }
  28.             }
  29.         }
  30.         long ans = 0;
  31.         for (int i = 0; i < a; i++) {
  32.             long left = d[i];
  33.             long right = h;
  34.             if (left > right)
  35.                 continue;
  36.             ans += (right - left + 1 + a - 1) / a;
  37.         }
  38.         out.println(ans);
  39.     }
Advertisement
Add Comment
Please, Sign In to add comment