※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 14595번 문제인 동방 프로젝트 (Large)이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/14595
imos법을 이용하면 각 벽에 대하여 해당 벽을 포함하는 구간의 개수를 총 \(O(N+M)\)에 구할 수 있다.
위와 같은 정보를 먼저 구하면, 각 벽에 대하여 해당 구간을 포함하는 구간이 있는지의 여부를 이용해 건물에 남은 벽의 개수를 구하고 이를 통해 답을 구할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int N, K;
int A[1000001];
int ans;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> K;
while (K--) {
int L, R; cin >> L >> R;
A[L]++, A[R]--;
}
for (int i = 1; i <= N; i++) {
A[i] += A[i - 1];
if (!A[i]) ans++;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 13473 // C++] Anniversary Cake (1) | 2024.07.14 |
---|---|
[BOJ 11268 // C++] Bell Ringing (0) | 2024.07.13 |
[BOJ 28851 // C++] Протокол <<Судного дня>> (0) | 2024.07.11 |
[BOJ 11968 // C++] High Card Wins (2) | 2024.07.10 |
[BOJ 18866 // C++] 젊은 날의 생이여 (0) | 2024.07.09 |