一个符合答案的值,要在这q个区间内
也就是要大于等于max({l1,l2,l3...lq}),并且小于等于min({r1,r2,r3....rq})。那么在枚举的过程中用两个变量(lmx和rmi)维护这两个值最后进行判断即可,不满足的情况也就是lmx>lmi,满足输出lmi即可
#include <bits/stdc++.h>
using namespace std;
int main() {
int q;
cin>>q;
int mi=1e9,mx=0;
for(int i=1;i<=q;i++){
int m,d;
cin>>m>>d;
mi=min(mi,m+d);
mx=max(mx,m-d);
}
if(mx>mi)cout<<-1<<'\n';
else cout<<mi<<'\n';
return 0;
}
q = int(input())
mi = int(1e9)
mx = 0
for i in range(1, q + 1):
m, d = map(int, input().split())
mi = min(mi, m + d)
mx = max(mx, m - d)
if mx > mi:
print(-1)
else:
print(mi)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int q = sc.nextInt();
int mi = (int)1e9;
int mx = 0;
for (int i = 1; i <= q; i++) {
int m = sc.nextInt();
int d = sc.nextInt();
mi = Math.min(mi, m + d);
mx = Math.max(mx, m - d);
}
if (mx > mi) {
System.out.println(-1);
} else {
System.out.println(mi);
}
}
}
一天,小红与小堡进行猜数游戏,由小红在随机选择一个整数K并给出Q个提示,小堡猜数。
每次给出的提示中包含两个整数M,D---表示M与K的差的绝对值不超过D。
现在,小堡想根据小红给出的Q条提示找出满足提示的最大的K。
输入的第一行包含一个整数Q(1≤Q<105)---代表Q条提示。
随后Q行,每行给出两个整数M,D(0≤M,D≤109)。
输出满足提示的最大的K,若没有这样的数,输出−1。
输入
3
3 3
2 5
5 3
输出
6
输入
3
1 1
2 2
3 3
输出
2