#include "TopKVideoHolder.h" void TopKVideoHolder::add(const VideoInfo& video) { if (pq.size() < K) { pq.push(video); } else { if (VideoCompareWorse()(video, pq.top())) { pq.pop(); pq.push(video); } } } std::vector TopKVideoHolder::getSortedVideos() { std::vector sortedVideos; size_t current_size = pq.size(); if (current_size == 0) return sortedVideos; sortedVideos.reserve(current_size); while (!pq.empty()) { sortedVideos.push_back(pq.top()); pq.pop(); } std::sort(sortedVideos.begin(), sortedVideos.end(), VideoInfo::compareForFinalSort); return sortedVideos; } bool TopKVideoHolder::empty() const { return pq.empty(); } size_t TopKVideoHolder::size() const { return pq.size(); }