Tehtäväsi on toteuttaa tietorakenne, joka pitää yllä kokoelmaa luvuista. Tietorakenteeseen pystyy lisäämään tehokkaasti k kappaletta lukua x sekä poistamaan k pienintä lukua ja laskemaan niiden summan.
Voit olettaa, että jokaisessa operaatiossa k ja x ovat enintään 10^9.
Python
Toteuta tiedostoon quickadd.py luokka QuickAdd, jossa on seuraavat funktiot:
add: lisää k kappaletta lukua x tietorakenteeseenremove: poista k pienintä lukua ja palauta näiden lukujen summa
Kummankin funktion tulee toimia tehokkaasti.
class QuickAdd:
    def add(self, k, x):
        # TODO
    def remove(self, k):
        # TODO
if __name__ == "__main__":
    q = QuickAdd()
    q.add(5,3)
    print(q.remove(2)) # 6
    q.add(8,1)
    print(q.remove(4)) # 4
    print(q.remove(7)) # 13
    q.add(10**9,123)
    print(q.remove(10**9)) # 123000000000
Java
Toteuta tiedostoon QuickAdd.java luokka QuickAdd, jossa on seuraavat metodit:
add: lisää k kappaletta lukua x tietorakenteeseenremove: poista k pienintä lukua ja palauta näiden lukujen summa
Kummankin metodin tulee toimia tehokkaasti.
public class QuickAdd {
    public void add(int k, int x) {
        // TODO
    }
    public long remove(int k) {
        // TODO
    }
    public static void main(String[] args) {
        QuickAdd q = new QuickAdd();
        q.add(5,3);
        System.out.println(q.remove(2)); // 6
        q.add(8,1);
        System.out.println(q.remove(4)); // 4
        System.out.println(q.remove(7)); // 13
        q.add(1000000000,123);
        System.out.println(q.remove(1000000000)); // 123000000000
    }
}
