感觉跟题解没什么不一样的,但是只对 1,2,3,4,6 五个点。
#include<bits/stdc++.h>
using namespace std;
#define int long long
constexpr int mod=1e9+9;
int x[200001];
signed main()
{
int n,k;cin>>n>>k;
for(int i=1;i<=n;i++)cin>>x[i];
sort(x+1,x+1+n);
__int128 ans=1;
int l=1,r=n;
int f=1;
if(k&1)ans*=x[n],r--,k++,f=x[n]>0?1:-1;
while(k-=2)
{
if(x[l]*x[l+1]*f<x[r]*x[r-1]*f)
ans=ans*x[r]%mod*x[r-1]%mod,r-=2;
else ans=ans*x[l]%mod*x[l+1]%mod,l+=2;
}
cout<<(long long)(ans%mod);
return 0;
}