한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
예제 input 11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 2 13 12 14
예제 output 4
============ Source Code ============
include
include
include
using namespace std; struct Meeting { int begin, end; }; bool cmp(const Meeting &u, const Meeting &v) { if (u.end == v.end) { return u.begin < v.begin; } else { return u.end < v.end; } } int main() { int n; scanf("%d",&n); vector a(n);
for (int i=0; i<n; i++) {
scanf("%d %d",&a[i].begin,&a[i].end);
}
sort(a.begin(), a.end(), cmp);
int now = 0;
int ans =0 ;
for (int i=0; i<a.size(); i++) {
if (now <= a[i].begin) {
now = a[i].end;
ans += 1;
}
}
printf("%d\n",ans);
return 0;
}