社区讨论
还有哪里不行?
P4530[CTSC2006] 投篮游戏参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m4jt42jm
- 此快照首次捕获于
- 2024/12/11 19:28 去年
- 此快照最后确认于
- 2025/11/04 13:00 4 个月前
帮忙改一下
CPP#include <bits/stdc++.h>
using namespace std;
long long a[10005], f[10005];
int main() {
while(1) {
long long n, m;
cin >> n >> m;
for(long long i = 1; i <= m; i ++) f[i] = 1;
if(n == 0 && m == 0) break;
long long zheng = 0, fu = 0, ling = 0, zhengs[10005] = {0}, fus[10005] = {0}, lings[10005] = {0}, ans = 0;
for(long long i = 1; i <= n; i ++) {
cin >> a[i];
if(a[i] > 0) zhengs[++ zheng] = a[i];
if(a[i] == 0) lings[++ ling] = a[i];
if(a[i] < 0) fus[++ fu] = a[i];
}
if(m == 1 && ling > 0) {
cout << 0 << endl;
continue;
}
if(m > 1) {
for(long long i = 1; i <= zheng; i ++) {
f[1] *= zhengs[i];
}
if(ling > 0) f[2] = 0;
sort(fus + 1, fus + fu + 1);
if(fu % 2 == 0) {
for(long long i = 1; i <= fu; i ++) f[1] *= abs(fus[i]);
}
else {
for(long long i = 1; i < fu; i ++) f[1] *= fus[i];
f[2] *= fus[fu];
}
for(long long i = 1; i <= m; i ++) ans += f[i];
}
else {
for(long long i = 1; i <= n; i ++) f[1] *= a[i];
ans = f[1];
}
cout << ans << endl;
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...