Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void solve() throws IOException {
- long h = nextLong();
- int a = nextInt();
- int b = nextInt();
- int c = nextInt();
- final long[] d = new long[a];
- Arrays.fill(d, Long.MAX_VALUE);
- d[1 % a] = 1;
- NavigableSet<Integer> q = new TreeSet<>(new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- if (d[o1] != d[o2]) {
- return Long.compare(d[o1], d[o2]);
- }
- return Integer.compare(o1, o2);
- }
- });
- q.add(1 % a);
- while (!q.isEmpty()) {
- int v = q.pollFirst();
- for (int e : new int[] { b, c }) {
- int u = (v + e) % a;
- if (d[u] > d[v] + e) {
- q.remove(u);
- d[u] = d[v] + e;
- q.add(u);
- }
- }
- }
- long ans = 0;
- for (int i = 0; i < a; i++) {
- long left = d[i];
- long right = h;
- if (left > right)
- continue;
- ans += (right - left + 1 + a - 1) / a;
- }
- out.println(ans);
- }
Advertisement
Add Comment
Please, Sign In to add comment