西南民族大学第十届校赛(同步赛)(F题——集训队脱单大法:这是一道只能由学姐我自己出数据的水题)

题目描述
总所不周知!ZZZZone有了女朋友却谁也不知道。但是ZZZZone在集训队总是和陈大佬走的很近,每天搂搂抱抱十分不成体统!于是就被ZZZZone的女朋友给知道了,但是呢,ZZZZone的女朋友是一个热爱画画的温柔又可爱的女子,于是她决定把ZZZZone大卸两块,没错是两块!!
ZZZZone呢他的长度为 n,并且每个单位长度都有一个相对应的重量,他的小女朋友希望将ZZZZone切成两部分后,两个部分中的最大重量之差的绝对值最大(显然两个部分均不能为空啊),她呢觉得很惆怅,不知道该怎么切最好,所以想让你们来想想办法。

输入描述:
第一行为一个n(2 <= n <= 105),表示ZZZZone的长度,第二行为n个数,表示ZZZZone每个单位长度的重量(0 <= a[i] <= 106)。

输出描述:
输出切成两部分后,每部分的重量的最大值之差的绝对值最大是多少。

输入
4
3 4 1 6

输出
3

这道题在做的时候应该知道第一个元素的值和最后一个元素的值时关键,假设共有n个元素,前x个元素一部分,后n-x个元素为一部分,前x个元素中最大的元素要么比第一个大,要么是第一个元素,所以都要取决于第一个元素的值,同理可得最后一个元素也是这个理,那我们只需要:
1.后n-1个元素中最大的减去第一个元素的值记为s;
2.前n-1个元素中最大的减去最后一个元素的值记为s1;
3.比较s和s1这两个值的大小,输出最大的即可;

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	long long int n,a[100005],b[100005],i,s,s1;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>a[i];
		b[i]=a[i];
	}
	sort(a+1,a+n);
	sort(b,b+n-1);
	s=a[n-1]-a[0];
	s1=b[n-2]-b[n-1];
	if(s>s1)
		cout<<s<<endl;
	else
		cout<<s1<<endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值