메모리 수 제한으로 인해 배열을 만들어 창문을 여닫는 방식으로는 해결이 불가능합니다.
창문을 여닫고 난 후의 결과를 보면 규칙성을 가지는 것을 알 수 있습니다.

보면 최종적으로 닫힌 창문의 수가 2씩 늘어나는 것을 확인할 수 있습니다.
이를 활용해 배열을 만들지 않고도 열린 창문의 개수를 구할 수 있습니다.
#include <iostream>
int main()
{
int n;
int cnt = 0;
std::cin >> n;
int temp = 0;
int curTemp = 0;
for (int i = 0; i < n; i++)
{
if (temp == curTemp)
{
cnt++;
temp += 2;
curTemp = 0;
}
else
curTemp++;
}
std::cout << cnt;
return 0;
}