最大N个数与最小N个数的和

标题:最大N个数与最小N个数的和 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。
说明:
       *数组中数字范围[0, 1000]
       *最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1
*输入非法返回-1


while True:
    try:
        m = int(input())
        nums_list = sorted(list(set(map(int, input().split()))))
        n = int(input())
        if len(nums_list) < 2 * n or nums_list[0] < 0 or nums_list[-1] > 1000:
            print(-1)
        else:
            min_nums, max_nums = nums_list[:n], nums_list[-n:]
            result = sum(min_nums) + sum(max_nums) if not set(min_nums) & set(max_nums) else -1
            print(result)
    except:
        break
	
#include <bits/stdc++.h>

using namespace std;

int Sum(vector<int>& nums, int n)
{
    set<int> numSet;
    for(int i=0;i<nums.size();i++)
    {
        numSet.insert(nums[i]);
    }
    if(numSet.size()<n*2)
        return -1;
    int ans = 0;
    auto start = numSet.begin(), end = numSet.end();
    end--;
    while(n>0)
    {
        ans += *start + *end;
        start++;
        end--;
        n--;
    }
    return ans;
}

int main(){
    vector<int> nums;
    int m = 0, n = 0, num = 0;
    cin >> m;
    for(int i = 0; i < m; i++){
        cin>>num;
        nums.push_back(num);
    }
    cin >> n;
    
    cout<<Sum(nums,n)<<endl;
    
    return 0;
}



全部评论

相关推荐

二月份来北京实习,虽然提前做了攻略,但是是人生第一次经历租房,全程自己搞定,所以难免还是踩坑了😅奉劝大家,租房不要只看自己的房间如何,还要看别人的房门口环境如何因为我就是那个倒霉蛋,我旁边房间额门口堆了一大堆杂物,都是另一个房间的人放在外面的,而且他门口放了几十双鞋子,冬天还好,现在是夏天,可太味了,怎么有这么多鞋啊啊啊啊,请看图片O(≧口≦)O一开始这屋里是一个人住,后来变成两个人住(他说他妈妈来北京看病暂时住,ok能体谅的)但是大概一个多月以后他妈妈回家了,无缝衔接了一位女朋友接着住,而且他的女朋友巨能买东西,我真的不得不吐槽,🥲我不管别人怎么花钱的,但是你买东西你起不来,你能不能换个时间约送上门,总是在周内或者周末的某一天早上七点多,没到起来的时间,快递员框框敲门了!!!!而且经常点外卖但是我们楼下有门禁,外卖员按响铃他俩不去解锁,一直等一直等,等到我们其他人受不了去帮解锁,吵得要死,他们像聋了一样!!!服啦!!!我的房租一个月不到1600,但是是阳隔,很不隔音,隔壁的大哥有时候会半夜吃薯片或者嗑瓜子(凌晨两三点的时候)好几次我都从梦里被嗑出来了🥲还好还剩两个月就实习结束可以回家了,呜呜想家,想我自己的窝😭
码农索隆:这也是我不喜欢合租的原因
我的租房踩坑经历
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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