Codeforces 1879A Rigged! C++题解

文章讲述了在一场涉及力量值(s)和耐力(ei)的举重比赛中,作为裁判如何确定一个w值帮助朋友1号选手获胜,如果无法找到则输出-1。算法分析显示,只有当所有选手都不满足条件时,1号选手才可能获胜。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意

有一场举重比赛,每个选手有两个数据,一个 s i si si表示力量值,另一个

e i ei ei表示耐力。比赛时,举办方选出一个w,的让每个选手都去尝试举重。

s i < w si<w si<w时,他不能举起来,得分为0.

s i > = w si>=w si>=w时,他能举起来 e i ei ei次,得分为 e i ei ei.

最后得分最大的人获胜,如果有多个,则无人获胜。

你的朋友是1号选手,你作为一个诚实的裁判,你想帮助你的朋友获胜,请你找出那个 w w w,使得你的朋友能够获胜,若不能,输出-1.

样例输入
3
4
7 4
9 3
4 6
2 2
2
4 6
100 100
2
1337 3
1337 3
样例输出
5
-1
-1
算法

这道题简单的不能再简单了,简单地分析样例后就可以得出结论,只要有一位选手的 s i , e i ≥ s 0 , e 0 si,ei≥s0,e0 si,eis0,e0,就不能获胜,反之,直接输出 s 0 s0 s0即可。

代码实现
#include<bits/stdc++.h>
using namespace std;
int main(){
	ios::sync_with_stdio(false);
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		int a,b;
		cin>>a>>b;
		
		bool flag=1;
		for(int i=1;i<n;i++){
			int x,y;
			cin>>x>>y;
			if(x>=a&&y>=b) flag=0;
		}
		
		if(flag){
			cout<<a<<endl;
		}
		else{
			cout<<-1<<endl;
		}
	} 
	return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值