求思路谢谢:>

2. 找5个数字

题目ID:9721必做题100分

最新提交:0 分

历史最高:0 分

时间限制: 200ms

空间限制: 65535kB

题目描述

时间:0.2s 空间:64M

【题目描述】

给定 8 个数字 X1,X2,…,X8,从中选出 5 个数字,使得这 5 个数字的总和最大。输出这 5 个数字的和以及它们的编号。Xi 的编号为 i。

【输入描述】

输入共 8 行,第 i 行包含一个正整数 Xi 。保证所有 Xi 互不相同。

【输出描述】

输出共两行。
第一行包含一个整数,表示最大的总和。
第二行包含 5 个整数,表示 5 个数的编号,按升序排序。

【样例输入】

20 30 50 48 33 66 10 64

【样例输出】

261 3 4 5 6 8

约定:

对于 100% 的数据,1≤Xi≤150。

提示:

/
/
我的想法是:先排序,取后五位,再把后五位求和,取序号,但是体现不到代码上

//头文件自己写
typedef pair<int,int> p;
bool cmp(p a,p b)
{
	return a.secont>b.secont; 
}
int main()
{
    vecotor<p> a;
    for(int i=1;i<=n;i++)
    {
		int x;
		//输入x
		a.push_back({i,x});
	}
	sort(a.begin(),a.end(),cmp);
	int sum=0;
	set<int> index;
	for(int i=0;i<5;i++)
	{
		index.insert(a[i].first);
		sum+=a[i].secontl
	}
	输出sum并换行
	for(auto i:index)
	{
		//输出i
	}
	return 0;
}
3 个赞

代码框架

3 个赞