Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
133867 | 林扬泉 | K 次取反后最大化的数组和 | C++ | 通过 | 100 | 0 MS | 248 KB | 483 | 2024-03-02 10:08:20 |
#include<bits/stdc++.h> using namespace std; const int N=1e3+10; int n,k; int a[N]; int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } sort(a+1,a+n+1); for(int i=1;i<=n;i++){ if(k<=0){ break; } if(a[i]<0){ a[i]=abs(a[i]); k--; } else{ if(k>=2){ k-=2; } else{ a[i]=(-a[i]); k--; } } } int sum=0; for(int i=1;i<=n;i++){ sum+=a[i]; } printf("%d\n",sum); return 0; }