私はここでこの問題を解決するプログラムを作成しています:http://opc.iarcs.org.in/index.php/problems/BOOKLIST
そして、私がベクトルを使用している唯一の場所は次のとおりです。
for(int i =0;i < total_books; i++){
int temp;
cin >> temp;
books_order.push_back(temp);
}
と
for(int i = 0;i < total_entries; i++){
int index;
cin >> index;
index--;
cout << books_order[index] << endl;
books_order.erase(books_order.begin()+index);
}
(これが私の完全なコードです:http://cpaste.org/1377/)
ベクトルから使用している関数は、vector :: Erase、vector :: push_back、vector::beginのみです。大きな入力の場合、私のコードは3秒以上かかります(これはその問題の制限時間です)が、ベクトル関数を削除すると、はるかに高速に実行されます(もちろん間違った答えが得られます)
この問題でベクトルを使用するのは間違っていること、および私のアルゴリズムが非常に遅いことは理解しましたが、なぜ遅いのか理解できませんでした。
私が使用している機能が遅い理由を知っているなら、私にそれらを説明してください。ありがとうございました。