比赛 EYOI暨SBOI暑假快乐赛3rd 评测结果 WWWWAAAAAAWWEEEEEEEE
题目名称 最小环(民间数据) 最终得分 30
用户昵称 湖岸与夜与咸鱼 运行时间 1.597 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2022-06-27 10:37:47
显示代码纯文本
// 河南省实验中学 2021级高中 关天泽

#include<bits/stdc++.h>
#define ll long long;
#define ull unsigned long long;

using namespace std;

long long n , a[1050] , m , k[11] , flag , ans = 0;

int main(){
	freopen("noi_online2020_ring.in","r",stdin);
	freopen("noi_online2020_ring.out","w",stdout);
    cin >> n >> m;
    for(int i = 1;i <= n;i++){
        cin >> a[i];
    }
    for(int i = 1;i <= m;i++){
        cin >> k[i];
        if(k[i] == 1){
            flag = 1;
        }
        if(k[i] == 2){
            flag = 2;
        }
    }
    if(flag == 1){
        sort(a + 1 , a + 1 + n);
        ans = ans + a[n] * a[n - 1] + a[n] * a[n - 2];
        for(int i = n - 1;i >= 3;i--){
            ans = ans + a[i] * a[i - 2];
        } 
        ans = ans + a[2] *a[1];
        for(int i = 1;i <= m;i++){
            cout << ans << endl;
        }
        return 0;
    }
    if(flag == 2){
        int c;
        c = n / 2;
        sort(a + 1 , a + 1 + n);
        ans = ans + a[n] * a[n - 1] + a[n] * a[n - 2];
        for(int i = n - 1;i > c + 2;i--){
            ans = ans + a[i] * a[i - 2];
        }
        ans = ans + a[c + 1] * a[c + 2];
        ans = ans + a[c] * a[c - 1] + a[c] * a[c - 2];
        for(int i = c - 1;i > 2;i--){
            ans = ans + a[i] * a[i - 2];
        }
        ans = ans + a[1] * a[2];
        for(int i = 1;i <= m;i++){
            cout << ans << endl;
        }
        return 0;
    }
	return 0;
}