请求调试代码 30分
查看原帖
请求调试代码 30分
1161241
FuHua19451001楼主2024/7/18 22:16
#include<bits/stdc++.h>
#define ll long long
using namespace std;

struct cmp {
	ll a, b;
} cmpt;

vector<cmp> cmps;
ll n;

bool compare(cmp a1, cmp b1) {
	//首先比较a1 和 b1 的出发点
	if (a1.a < b1.a) {
		return true;
	}
	else if(a1.a==b1.a){
		//若是二者相等,则就选取长度较小的
		if (a1.b - a1.a <= b1.a - b1.b) {
			return true;
		}
		else {
			return false;
		}
	}
	else {
		return false;
	}

}

int main() {
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> cmpt.a >> cmpt.b;
		cmps.push_back(cmpt);
	}

	sort(cmps.begin(), cmps.end(), compare);

	vector<cmp> ans;
	for (int i = 0; i < n; i++) {
		//若是为空,直接加入当前赛程
		if (ans.size() == 0) {
			ans.push_back(cmps[0]);
		}
		else {
			//若是合法就马上添加
			if (cmps[i].a >= ans[ans.size()-1].b) {
				ans.push_back(cmps[i]);
			}
			//若是出现了比他更短的,直接替换
			else if (ans[ans.size() - 1].b - ans[ans.size() - 1].a > cmps[i].b - cmps[i].a) {
				ans.pop_back();
				ans.push_back(cmps[i]);
			}
		}
	}

	cout << ans.size() << endl;
}
2024/7/18 22:16
加载中...