AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 问答
    • 吐槽
  • App
  • 登录/注册

AcWing 1239. 乘积最大

作者: 作者的头像   那必须得是我了 ,  2023-02-02 13:52:18 ,  所有人可见 ,  阅读 7


0


#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

typedef long long LL;

const int N = 1e5+10,MOD=1000000009;

int a[N];
int n,k;

int main()
{
    scanf("%d%d", &n,&k);
    for(int i=0;i<n;i++)    scanf("%d", &a[i]);
    sort(a,a+n);

    int res=1,sign=1;
    int l=0,r=n-1;
    if(k%2)
    {
        res=a[r--];
        k--;
        if(res<0)   sign=-1;
    }

    while(k)
    {
        LL x = (LL)a[l]*a[l+1],y=(LL)a[r-1]*a[r];
        if(x * sign > y * sign)
        {
            res=x % MOD * res % MOD;
            l+=2;
        }
        else
        {
            res=y % MOD * res % MOD;
            r-=2;
        }
        k-=2;
    }
    printf("%d\n",res);

    return 0;
}

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息