蒟蒻 WA on #5 40pts求调
查看原帖
蒟蒻 WA on #5 40pts求调
625380
FriedrichC楼主2022/10/23 09:12

rt

#include<bits/stdc++.h>
using namespace std;
typedef __int128 ll;
inline int read()
{
    int x=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
    return x;
}
void write(ll x)
{
    if(x>9)write(x/10);
    putchar(x%10+48);
}
int n,m,a[90];
ll f[90][90];
ll dp(int l,int r)
{
    if(f[l][r]!=-1)return f[l][r];
    //printf("l=%d r=%d f=%d\n",l,r,f[l][r]);
    if(l==r)return f[l][r]=a[l]*(1<<m);
    f[l][r]=max(dp(l+1,r)+a[l]*(1<<(m-(r-l))),dp(l,r-1)+a[r]*(1<<(m-(r-l))));
    return f[l][r];
}
int main()
{
    /*freopen("P1005_5.in","r",stdin);
    freopen("P1005.out","w",stdout);*/
    n=read(); m=read();
    ll ans=0;
    while(n--)
    {
        memset(f,-1,sizeof(f));
        for(int i=1;i<=m;++i)cin>>a[i];
        ans+=dp(1,m);
    }
    if(!ans)puts("0");
    else write(ans);
	return 0;
}

2022/10/23 09:12
加载中...