2016-05-10 3 views

Antwort

1

Verwenden Sie ein std::vector oder std::array und dann nach jedem Schritt Art auf den Behälter laufen.

Hinweis: Sie nicht, wie in den Kommentaren vorgeschlagen, verwenden Sie eine std::multiset oder std::set oder std::map durch den Schlüssel zu ändern! Sie können den alten Schlüssel entfernen und durch einen neuen ersetzen. Da Sie alle Elemente ändern, ist es schneller, die Sortierung nach jedem Schritt auszuführen, anstatt eine Map oder einen Satz zu verwenden, die nach jedem Einfügen sortiert werden.

Sie können etwa wie folgt tun:

std::vector<int> myArray = {2, 2, 5}; 

runStep1(myArray); 
std::sort(begin(myArray), end(myArray)); 

runStep2(myArray); 
std::sort(begin(myArray), end(myArray)); 
+0

Ja, ich denke du hast Recht - du willst nicht, dass die Art bei jeder Änderung eines Elements passiert - gleich nach jedem "Pass". –

+0

Ich habe diese Methode verwendet, aber es dauert zu lange für große Eingaben, gibt es einen schnelleren Algorithmus, können Sie das Problem "forestga" in Codechef sehen – akash

Verwandte Themen