C11ROOKS - Hai quân xe
Tác giả: flashmt
Ngôn ngữ: C++
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int n,a[333][333],row[333],col[333],ans;
int main()
{
cin >> n;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
scanf("%d",a[i]+j), row[i]+=a[i][j], col[j]+=a[i][j];
for (int i=1;i<n;i++)
for (int j=i+1;j<=n;j++)
{
int mxI=-(1<<29),mxJ=mxI;
for (int k=1;k<=n;k++)
{
int vI=col[k]-a[i][k]*2-a[j][k];
int vJ=col[k]-a[i][k]-a[j][k]*2;
ans=max(ans,row[i]+row[j]+mxI+vJ);
ans=max(ans,row[i]+row[j]+mxJ+vI);
ans=max(ans,row[i]+row[j]+col[k]-a[i][k]*2-a[j][k]*2);
ans=max(ans,col[i]+col[j]+row[k]-a[k][i]*2-a[k][j]*2);
mxJ=max(mxJ,vJ);
mxI=max(mxI,vI);
}
}
cout << ans << endl;
}