记录一道思维题(有点意思)
也蛮简单,适合我这种蒟蒻
思路是把所有的正数都变成负数,因为变负数之后绝对值变大,所以只要负数的个数是偶数,乘积一定最大。
如果负数的个数是奇数,再把最小的最小的数变为正数即可
原创ac代码:
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main()
{
int n;
while(cin >> n)
{
int t=0;
for(int i=1;i<=n;i++)
{
cin >> a[i];
if(a[i]>=0) a[i]=-a[i]-1;
}
int min=0x3f3f3f3f,x=1;
if(n%2==1)
{
for(int i=1;i<=n;i++)
{
if(a[i]<min&&a[i]!=-1)
{
min=a[i];
x=i;
}
}
a[x]=-a[x]-1;
}
for(int i=1;i<=n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
return 0;
}
211

被折叠的 条评论
为什么被折叠?



