Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <set>
- #include <vector>
- using namespace std;
- int main(void) {
- int N, K;
- cin >> N >> K;
- vector<int> bulbs(N, 0);
- for (int &bulb : bulbs) {
- cin >> bulb;
- }
- vector<int> d_map(K, 0);
- int c_min = numeric_limits<int>::max();
- int i = 0, j = 0, current_bulbs = 0;
- while (i < N && j < N) {
- if (current_bulbs < K) {
- // Increasing window
- if (d_map.at(bulbs.at(i)) == 0) {
- d_map.at(bulbs.at(i))++;
- current_bulbs++;
- } else {
- d_map.at(bulbs.at(i))++;
- }
- i++;
- } else {
- // Decreasing window
- if (d_map.at(bulbs.at(j)) == 1) {
- d_map.at(bulbs.at(j))--;
- current_bulbs--;
- } else {
- d_map.at(bulbs.at(j))--;
- }
- j++;
- }
- if (current_bulbs == K) {
- c_min = min(c_min, i - j);
- }
- }
- cout << c_min;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement