2457 : 공주님의 정원

풀이

회의실 배정 문제에 날짜가 추가된 버전이다.

정렬해서 그리디를 돌리면 된다.

날짜를 처리하기가 조금 까다롭다.

하지만 까다로운 건 싫다.

그렇다면 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, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-08-20 00:33

Read more posts by this author