풀이
회의실 배정 문제에 날짜가 추가된 버전이다.
정렬해서 그리디를 돌리면 된다.
날짜를 처리하기가 조금 까다롭다.
하지만 까다로운 건 싫다.
그렇다면 month에 100을 곱해보자.
기적이 일어난다.
코드
#include <stdio.h>
#include <algorithm>
#define fst first
#define snd second
using namespace std;
int n;
pair<int, int> f[100001];
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
f[i].fst = a * 100 + b, f[i].snd = c * 100 + d;
}
sort(f, f + n);
int date = 301, flag = 0, temp = 0, ans = 0, i = -1;
while (date <= 1130 && i < n) {
flag = 0, i++;
for (int j = i; j < n; j++) {
if (f[j].fst > date) break;
if (temp < f[j].snd) temp = f[j].snd, flag = 1, i = j;
}
if (flag) date = temp, ans++;
else {
printf("0");
return 0;
}
}
printf("%d", ans);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이