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 } }