Problem:
Activity Selection Problem

There are $n$ acitivities with start times $\{s_i\}$ and finish times $\{t_i\}$. Assuming that a person can only work on a single activity at a time, find the maximum number of activities that can be performed by a single person.

Input

$n$
$s_1$ $t_1$
$s_2$ $t_2$
:
$s_n$ $t_n$

The first line consists of the integer $n$. In the following $n$ lines, the start time $s_i$ and the finish time $t_i$ of the activity $i$ are given.

出力

Print the maximum number of activities in a line.

Constraints

$1 \le n \le 10^5$

$1 \le s_i \lt t_i \le 10^9 (1 \le i \le n)$

Sample Input 1

5
1 2
3 9
3 5
5 9
6 8

Sample Output 1

3

Sample Input 2

3
1 5
3 4
2 5

Sample Output 2

1

Sample Input 3

3
1 2
2 3
3 4

Sample Output 3

2

Solution in C (judge verdict: Accepted)

#include <stdio.h>
#include <stdlib.h>

int s[100010],t[100010],idx[100010];
int c(const void*p,const void*q){
	if(t[*(int*)p]<t[*(int*)q])return -1;
	return 1;
}
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)scanf("%d%d",s+i,t+i);
	for(int i=0;i<n;i++)idx[i]=i;
	qsort(idx,n,sizeof(int),c);
	int ans=0,time=0;
	for(int i=0;i<n;i++){
		if(time<s[idx[i]]){
			time=t[idx[i]];
			ans++;
		}
	}
	printf("%d\n",ans);
}