#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n,m,a[85][85],cnt=0,hdd[85],tll[85];
long long ans=0;
char ch;
void fnd(int u){
int w;
if((tll[u]-hdd[u])%2==0){
w=(tll[u]-hdd[u])/2+hdd[u];
for(register int q=hdd[u];q<=w;q++)
if(a[u][q]!=a[u][(tll[u]+hdd[u]-a[u][q])]){
if(a[u][q]>a[u][tll[u]+hdd[u]-a[u][q]])ch='t';
else ch='h';
return;
}
}
else{
w=(hdd[u]+tll[u])/2;
for(register int q=hdd[u];q<=w;q++){
if(a[u][q]!=a[u][hdd[u]+tll[u]-a[u][q]]){
if(a[u][q]>a[u][tll[u]+hdd[u]-a[u][q]])ch='t';
else ch='h';
return;
}
}
}
ch='t';
return;
}
signed main(){
scanf("%d%d",&n,&m);
memset(tll,m,sizeof(tll));
memset(hdd,1,sizeof(hdd));
for(register int i=1;i<=n;i++){
for(register int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
while(hdd[1]<tll[1]){
cnt++;
for(register int i=1;i<=n;i++){
if(a[i][hdd[i]]!=a[i][tll[i]]){
if(min(a[i][hdd[i]],a[i][tll[i]])==a[i][hdd[i]]){
ans+=(pow(2,cnt))*a[i][hdd[i]];
hdd[i]++;
}
else{
ans+=(pow(2,cnt))*a[i][tll[i]];
tll[i]--;
}
}
else{
fnd(i);
if(ch=='t'){
ans+=pow(2,cnt)*a[i][tll[i]];
tll[i]--;
}
else if(ch=='h'){
ans+=pow(2,cnt)*a[i][hdd[i]];
hdd[i]++;
}
}
}
}
printf("%lld",ans);
}
可以帮着看一下吗