C++京东编程题2:在重合区间上选数字的最大和

/*
京东编程题2:共同区间最大值的两倍。
if大法好。通过率:76%
输入区间 [l1,r1], [l2,r2], [l3,r3], 在重合但不相同的区间上选最大值,输出两数之和.
若不存在,输出-1.
输入:1 3 2 4 4 6
输出:8
说明:讨厌鬼选择[2,4]区间的4,小甜妹选择[4,6]区间的4
*/

#include <iostream>
using namespace std;
#include<algorithm>

int main2() {
	int l1, r1, l2, r2, l3, r3;  //输入区间范围
	cin >> l1 >> r1 >> l2 >> r2 >> l3 >> r3;
	int ans = -1;  //答案初始化为-1

	if (r1 < l2 && r2 < l3) {  //如果没有重合区间,直接输出-1
		cout << -1 << endl;
		return 0;
	}

	if (r1 >= min(r2, r3) && r1 <= max(r2, r3)) {  //r1为第2大
		if ((r1 >= l2 && r1 <= r2) || (r1 >= l3 && r1 <= r3)) {
			ans = 2 * r1;
		}
	}
	else if (r2 >= min(r1, r3) && r1 <= max(r1, r3)) {  //r2为第2大
		if ((r2 >= l1 && r2 <= r1) || (r2 >= l3 && r2 <= r3)) {
			ans = 2 * r2;
		}
	}
	else if (r3 >= min(r1, r2) && r3 <= max(r1, r2)) {  //r3为第2大
		if ((r3 >= l1 && r3 <= r1) || (r3 >= l2 && r3 <= r2)) {
			ans = 2 * r3;
		}
	}
	else if (r1 == min(r1, min(r2, r3))) {  //r1最小
		if ((r1 >= l2 && r1 <= r2) || (r1 >= l3 && r1 <= r3)) {
			ans = 2 * r1;
		}
	}
	else if (r2 == min(r1, min(r2, r3))) {  //r2最小
		if ((r2 >= l1 && r2 <= r1) || (r2 >= l3 && r2 <= r3)) {
			ans = 2 * r2;
		}
	}
	else if (r3 == min(r1, min(r2, r3))) {  //r3最小
		if ((r3 >= l2 && r3 <= r2) || (r3 >= l1 && r3 <= r1)) {
			ans = 2 * r3;
		}
	}

	cout << ans << endl;
	return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

04-02 10:09
门头沟学院 Java
用微笑面对困难:这里面问题还是很多的,我也不清楚为啥大家会感觉没啥问题。首先就是全栈开发实习9个月的内容都没有java实习生的内容多,1整个技术栈没看出太核心和难点的内容,感觉好像被拉过去打杂了,而且全栈基本上很容易被毙。里面能问的bug是在太多了比如L:继承 BaseMapper 可直接使用内置方法’。请问你的 BaseMapper 是如何扫描实体类注解如果瞬时产生 100 个上传任务,MySQL 的索引设计是否会有瓶颈?你做过分库分表或者索引优化吗?全栈的内容可以针对动态难点去搞,技能特长写在下面吧,你写了这么多技能,项目和实习体现了多少?你可以在项目里多做文章然后把这个放下去,从大致来看实习不算太水,有含金量你也要写上内容针对哨兵里面的节点变化能问出一万个问题,这个很容易就爆了。
提前批简历挂麻了怎么办
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务