专栏文章

题解:CF538C Tourist's Notes

CF538C题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miq9fycm
此快照首次捕获于
2025/12/04 01:07
3 个月前
此快照最后确认于
2025/12/04 01:07
3 个月前
查看原文

思路:

这道题题意很明确,用 pair 把天数与海拔存下来,判断两个记录之间能达到的最大海拔是多少最后输出答案即可。
要注意一下,第 11 天到第一次输入的那一天和最后一次输入到结束的那些天也要计入答案。

代码

CPP
#include <bits/stdc++.h>
using namespace std;
int n,m;
int main() {
	cin>>n>>m;
	vector<pair<int,int> >a(m);
	for(int i=0;i<m;++i) cin>>a[i].first>>a[i].second;
	sort(a.begin(),a.end());
	int mx=max(a[0].second+a[0].first-1,a.back().second+(n-a.back().first));
	for(int i=1;i<m;++i){
		int h=abs(a[i].second-a[i-1].second),d=a[i].first-a[i-1].first;
		if(h>d){
			cout<<"IMPOSSIBLE\n";
			return 0;
		} 
		mx=max(mx,max(a[i].second,a[i-1].second)+(d-h)/2);
	}
	cout<<mx<<endl;
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...