제출 #1233360

#제출 시각아이디문제언어결과실행 시간메모리
1233360MuhammadSaram축구 경기장 (IOI23_soccer)C++20
8 / 100
4594 ms416 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++)
				{
					if (a[i][j] or a[i1][j1]) continue;
					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 ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...