usaco-camp

Short, concise solutions for problems from the USACO camp

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
#include <bits/stdc++.h>
using namespace std;

int A[100001];

int main() {
	int N, K; cin >> N >> K;
	for (int i = 0; i < N; ++i) cin >> A[i];
	multiset<int> S;
	vector<int> ans;
	for (int i = 0; i < N; ++i) {
		if (S.size() < K || A[i] > *begin(S)) {
			if (S.size() == K) ans.push_back(*begin(S)), S.erase(begin(S));
			S.insert(A[i]);
		}
		else ans.push_back(A[i]);
	}
	while (S.size()) ans.push_back(*begin(S)), S.erase(begin(S));
	for (auto& x : ans) cout << x << '\n';
}