加载中...

浙江理工大学入队200题——18D

问题 D: 摘果子

题目描述

果园里一共有n 个果子,每个果子的重量 ai都是已知的。
果园的主人喜欢收集 “最萌重量差” 的果子,现聘请你来帮他完成这一任务。
所谓 “最萌重量差” 的果子,满足如下要求:
它们是 n个果子中任意的2 个果子组成的一对
这2 个果子的重量之差是所有 “任意两两组合” 中差值最大的
“最萌重量差” 的果子可能不只一组,但同一个果子不能同时出现在多个组合中。

输入

第一行n ,表示果子的种数。
第二行n 个数,表示每个果子的重量 ai。

输出

输出若干行,每行一种 ”最萌重量差“ 果子的组合,重量小的在前。
两数之间用 1个空格隔开。

样例输入 Copy

【样例输入1】
7
1 3 5 2 7 9 10
【样例输入2】
10
1 3 5 2 7 9 12 5 13 1

样例输出 Copy

【样例输出1】
1 10
【样例输出1】
1 13
提示
对于100% 的数据:2<=n<=105,0<=ai<=1000000000 。

题解

任意两两最大,同时选取了之后不能出现在其他组,就注定了我们要排序取最大-最小计为max(sort一下)
因为不一定只有一组,所以左右缩进1位判断右-左是否还为max,是的话输出,一直循环;不是的话break;

代码(AC)

点击查看代码
#include <bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
			int a[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	sort(a,a+n);
	int flag=0;
	  for(int i=0;i<n;i++)
	  {
	     printf("%d %d\n",a[i],a[n-i-1]);
	     if(a[i+1]!=a[i]||a[n-i-2]!=a[n-i-1]) break;
	  }		
    }
	return 0;
}
posted @ 2022-10-30 14:06  shany212  阅读(141)  评论(0编辑  收藏  举报