Previous Next
0 / 4
Module DS-09DSJAVA

Stable Priority Job Scheduler

DSJAVA β€’ Data Structures and Algorithms in Java

Browser-only practice

Problem Statement

Application lab in Heaps and Priority Queues

Mission

Run highest-priority jobs first while preserving arrival order on ties.

Learning outcome: Apply priorities with stable tie-breaking

Correctness contract

Invariant: Every parent has priority over its children, and the root is the next item removed.

Required technique: Use a priority queue ordered by descending priority and ascending arrival index for ties.

Complexity target: time O(n log n); space O(n).

Input and output

Input: n followed by n name priority pairs in arrival order. Whitespace may be spaces or line breaks.

Output: Print the requested sequence on one line with single spaces and no trailing space. Return it as a String; Main.java prints it without adding other text.

Assumptions:

  • Job names contain no spaces; higher numeric priority runs first.

Before you code

  1. Restate the input and output contract, then predict the visible example without running code.
  2. Implement the core state transition: Use a priority queue ordered by descending priority and ascending arrival index for ties.
  3. Trace the smallest boundary case, verify exact formatting, and justify the authored time and auxiliary-space bounds.

Implement Practice.solve(Scanner sc). Keep every provided filename and public class name unchanged.

Sample input

4 build 2 test 5 deploy 3 docs 2

Sample output

test deploy build docs

Why the sample works: Visible walkthrough for the ordinary non-trivial path. Higher numeric priority is removed first, while arrival index breaks equal-priority ties stably. Input `4 build 2 test 5 deploy 3 docs 2` therefore produces `test deploy build docs`.

Progressive hints

Try the trace and first milestone before opening a hint. Open them in order.

Open hint 1

Hint 1 β€” Contract: identify what each parsed variable represents and write the invariant beside the loop or recursive method.

Open hint 2

Hint 2 β€” Next step: Trace the smallest non-trivial input and write the structure state after the operation before coding the loop.

Open hint 3

Hint 3 β€” Verification: compare the structure state before and after one operation, then test the smallest valid input and a duplicate or unreachable case when allowed.

Constraints

Input contract: n followed by n name priority pairs in arrival order.

  • Job names contain no spaces; higher numeric priority runs first.

Required technique: Use a priority queue ordered by descending priority and ascending arrival index for ties.

Output contract: Print the requested sequence on one line with single spaces and no trailing space.

Use Java 8-compatible code only. Keep the public class names and Practice.solve(Scanner sc) signature from the starter files.

Input Format

n followed by n name priority pairs in arrival order.

Output Format

Print the requested sequence on one line with single spaces and no trailing space.

Sample Testcases

Submit runs every public testcase in this browser. Results and code never leave this device.

Sample #1
Public sample
4 build 2 test 5 deploy 3 docs 2
test deploy build docs
Visible walkthrough for the ordinary non-trivial path. Higher numeric priority is removed first, while arrival index breaks equal-priority ties stably. Input `4 build 2 test 5 deploy 3 docs 2` therefore produces `test deploy build docs`.

Web terminal

C, C++, Java, and Python run locally in a browser VM. No worker or visualizer is used.

Saved in this browser
Editor settings