题目:1239. 乘积最大
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<double,double>PII;
const int N=1e5+10;
const int mod=1000000009;
int n,k;
int a[N];
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
LL sum=1;
int l=0,r=n-1;
int sign=1;
if(k%2){
sum=(sum*a[n-1])%mod;
k--;
r--;
}
while(k){
if(sum<0) sign=-1;
else sign=1;
LL x=1ll*sign*a[l]*a[l+1];
LL y=1ll*sign*a[r]*a[r-1];
if(x>=y){
sum=(sign*x%mod*sum)%mod;//注意一定要先对x进行取模,要不然会爆long long
l+=2;
}else{
sum=(sign*y%mod*sum)%mod;
r-=2;
}
k-=2;
//cout<<sum<<endl;
}
printf("%lld",sum);
return 0;
}