1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.*;
 
/** A max heap of times, with associated names for each time value. */
public class TimeHeap {
  /** A single (time,name) entry in the heap.
   * Note that when you are doing heap operations, you will be comparing
   * the "time" field in each entry.
   */
  private class Entry {
    public long time;
    public String name;
    public Entry(long time, String name) {
      this.time = time;
      this.name = name;
    }
  }
 
  // TODO: An array or ArrayList to store your heap
  // Perhaps you also want to store the size?
 
  /** Creates a new, empty heap. */
  public TimeHeap() {
    // TODO: initialize your heap with size 0
    // (hint: the array or arraylist should NOT be empty!)
  }
 
  /** Returns the number of entries in the heap */
  public int size() {
    return 0; // TODO; this return value should be fixed!
  }
 
  /** Inserts a new time and corresponding name to the heap. 
   * You can assume the name is not null. */
  public void insert(long time, String name) {
    // TODO
  }
 
  /** Removes the entry with the largest time, and returns the
   * corresponding name.
   */
  public String removeMax() {
    if (size() < 1) {
      throw new NoSuchElementException("heap is empty");
    }
 
    return null; // TODO; this return value should be fixed!
  }
}