You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.0 KiB
C++
81 lines
2.0 KiB
C++
#include <cstdio>
|
|
#include <cstring>
|
|
int n,m,a[90];
|
|
struct bigint
|
|
{
|
|
int data[80];
|
|
void refresh()
|
|
{
|
|
for(int i=0; i<40; i++)
|
|
data[i+1]+=data[i]/10,data[i]%=10;
|
|
}
|
|
bigint(int val=0)
|
|
{
|
|
memset(data,0,sizeof(data));
|
|
data[0]=val;
|
|
refresh();
|
|
}
|
|
bigint operator+=(const bigint& rhs)
|
|
{
|
|
for(int i=0; i<40; i++)
|
|
data[i]+=rhs.data[i];
|
|
refresh();
|
|
return *this;
|
|
}
|
|
bigint operator+(const bigint& rhs)
|
|
{
|
|
bigint ret=*this;
|
|
return ret+=rhs;
|
|
}
|
|
bigint operator*(const bigint& rhs)
|
|
{
|
|
bigint ret;
|
|
for(int i=0; i<40; i++)
|
|
for(int j=0; j<40; j++)
|
|
ret.data[i+j]+=(data[i]*rhs.data[j]);
|
|
ret.refresh();
|
|
return ret;
|
|
}
|
|
};
|
|
bigint max(const bigint& a,const bigint& b)
|
|
{
|
|
int len1,len2;
|
|
for(len1=40; len1>=0&&a.data[len1]==0; len1--);
|
|
for(len2=40; len2>=0&&b.data[len2]==0; len2--);
|
|
if(len1>len2) return a;
|
|
if(len1<len2) return b;
|
|
for(; len1+len2>=0; len1--,len2--)
|
|
if(a.data[len1]>b.data[len2]) return a;
|
|
else if(a.data[len1]<b.data[len2]) return b;
|
|
return b;
|
|
}
|
|
bigint _2n[90],f[90][90],tmp,ans;
|
|
int main()
|
|
{
|
|
scanf("%d%d",&n,&m);
|
|
_2n[0]=1;
|
|
for(int i=1; i<=m; i++) _2n[i]=_2n[i-1]*2;
|
|
for(int x=1; x<=n; x++)
|
|
{
|
|
tmp=0;
|
|
memset(f,0,sizeof(f));
|
|
memset(a,0,sizeof(a));
|
|
for(int i=1; i<=m; i++)
|
|
scanf("%d",&a[i]);
|
|
for(int i=1; i<=m; i++)
|
|
{
|
|
f[i][0]=f[i-1][0]+_2n[i]*a[i];
|
|
f[0][i]=f[0][i-1]+_2n[i]*a[m-i+1];
|
|
}
|
|
for(int i=1; i<=m; i++)
|
|
for(int j=1; j<=m-i; j++)
|
|
f[i][j]=max(f[i-1][j]+_2n[i+j]*a[i],f[i][j-1]+_2n[i+j]*a[m-j+1]);
|
|
for(int i=0; i<=m; i++) tmp=max(tmp,f[i][m-i]);
|
|
ans+=tmp;
|
|
}
|
|
int len=40;
|
|
for(; len>0&&ans.data[len]==0; len--);
|
|
for(; len>=0; len--) printf("%d",ans.data[len]);
|
|
return 0;
|
|
}
|