(백준) 연속된 K개 전구들의 불 끄기

#include <iostream>
#include <queue>

using namespace std;

bool light[100000];
queue<int> dk;
bool cmpFactor = true;
bool insomnia = false;

int main() {
   FILE * empty; freopen_s(&empty, "input.txt", "r", stdin);
   int N, K, c = 0, i;
   cin >> N >> K;
   for (int i = 0; i < N; i++) {
      cin >> light[i];
   }
   for (i = 0; i < N; i++) {
      if (!dk.empty() && dk.front() == i) cmpFactor ^= 1, dk.pop();
      if (light[i] == cmpFactor) {
         dk.push(i + K);
         cmpFactor ^= 1;
         c++;
      }
   }
   bool flag = true;
   while (!dk.empty()) {
      if (i < dk.front())
      {
         flag = false;
      }
      dk.pop();
   }
   flag ? (cout << c << endl) : (cout << "Insomnia" << endl);
   return 0;
}

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기