#include "bits/stdc++.h"
#define int long long
using namespace std;
const int mod=1e9+7;
int a[1000000];
int poww(int a,int b)
{
int ans=1;
while(b)
{
if(b&1)
ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--)
{
int n,k,all_sum=0;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
all_sum+=a[i];
}
int sum=0,ans=0;
for(int i=1;i<=n;i++)
{
sum=sum+a[i];
ans=max(ans,sum);
sum=max(sum,0ll);
}
// cout<<maxx<<'\n';
int f=(1ll*ans%mod*poww(2,k)%mod+(all_sum%mod-ans%mod+mod)%mod+mod)%mod;
// int f=(1ll*poww(2,k)%mod*ans%mod+(all_sum%mod-ans%mod+mod)%mod)%mod;
cout<<f<<'\n';
}
}
最大字段和及加法莫
最新推荐文章于 2024-09-12 19:02:20 发布