# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1233357 | MuhammadSaram | Soccer Stadium (IOI23_soccer) | C++20 | 0 ms | 0 KiB |
#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
int biggest_stadium(int n, vector<vector<int>> a)
{
int pre[n][n+1]={},pre1[n][n+1]={};
for (int i=0;i<n;i++)
for(int j=0;j<n;j++)
pre[i][j+1]=pre[i][j]+a[i][j],pre1[j][i+1]=pre1[j][i]+a[i][j];
bool ed[n*n][n*n]={};
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
for (int i1=0;i1<n;i1++)
for (int j1=0;j1<n;j1++)
{
bool x=1;
if (i==i1 && pre[i][j1]!=pre[i][j])
x=0;
if (j==j1 && pre1[j][i]!=pre1[j][i1])
x=0;
if (i!=i1 && j!=j1)
{
bool pos=0;
if (pre[i][j]==pre[i][j1] && pre1[j1][i]==pre1[j1][i1])
pos=1;
if (pre1[j][i]==pre1[j][i1] && pre[i1][j]==pre[i1][j1])
pos=1;
x=pos;
}
if (x) ed[i*n+j][i1*n+j1]=1;
}
int ans=0;
for (int m=0;m<(1<<n*n);m++)
{
vector<int> v;
for (int i=0;i<n*n;i++)
if (m>>i&1)
v.push_back(i);
bool pos=1;
for (int i:v)
for (int j:v)
if(!ed[i][j]) pos=0;
if (pos) ans=max(ans,(int)v.size());
}
return cnt;
}