题目背景
题目是经过简写保证不改变原有题意的题目。
题目描述
FJ 参加活动。
他想参加尽可能多的 �N 个活动,参加完某个之后可以立刻参加下一个。
给定 FJ 可参加的活动列表、其开始时间 �T 和持续时间 �L ,求 FJ 可以参加的最大活动数。
FJ 每个活动都不会提早离开。
输入格式
第一行有一个整数 �N。
第二到 �+1N+1 行:每行包含两个用空格分隔的整数 �T 和 �L ,意义如上述。
输出格式
输出仅一行,FJ 最多能参加几个活动。
输入输出样例
输入 #1复制
7
1 6
8 6
14 5
19 2
1 8
18 3
10 6
输出 #1复制
4
说明/提示
1≤�,�≤1051≤T,L≤105
1≤�≤1041≤N≤104
代码如下:
#include<bits/stdc++.h>
using namespace std;
struct jie{int kai;
int jies;
}a[100001];
bool cmp(jie x,jie y){
if(x.jies<y.jies){
return1;
}elseif(x.jies==y.jies){
if(x.kai<y.kai){
return1;
}else{
return0;
}
}else{
return0;
}
}
int main(){
int n;
cin>>n;
int chi;
for(int i=0;i<n;i++){
cin>>a[i].kai>>chi;
a[i].jies=a[i].kai+chi;
}
sort(a,a+n,cmp);
int s=1,z=a[0].jies;
for(int i=1;i<n;i++){
if(a[i].kai>=z){
s++;
z=a[i].jies;
}
}
cout<<s;
return 0;
}