Submission #1233297

#TimeUsernameProblemLanguageResultExecution timeMemory
1233297MuhammadSaramSoccer Stadium (IOI23_soccer)C++20
2 / 100
4596 ms63256 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]={};
	vector<pair<int,int>> v;
	int cnt=0;
	for (int i=0;i<n;i++)
	{
		int f=-1,s=-1;
		int f1=-1,s1=-1;
		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];
			if (!a[i][j]) s=j,f=(~f?f:j),cnt++;
			if (!a[j][i]) s1=j,f1=(~f1?f1:j);
		}
		if (~f) v.push_back({i,f});
		if (s!=f) v.push_back({i,s});
		s=s1,f=f1;
		if (~f) v.push_back({f,i});
		if (s!=f) v.push_back({s,i});
	}
	for (int i=0;i<n;i++)
		for (int j=0;j<n;j++)
		{
			if (a[i][j]) continue;
			for (auto [i1,j1]:v)
			{
				
				if (i==i1 && pre[i][j1]!=pre[i][j])
					cnt++;
				if (j==j1 && pre1[j][i]!=pre1[j][i1])
					cnt++;
				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;
					if (!pos) cnt++;
				}
			}
		}
	return cnt;
}
#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...