제출 #1346306

#제출 시각아이디문제언어결과실행 시간메모리
1346306OgradL축구 경기장 (IOI23_soccer)C++20
0 / 100
4594 ms2168 KiB
#include "soccer.h"
#include <functional>
#include <vector>
using namespace std;

int biggest_stadium(int N, vector<vector<int>> F){

	function<int(int, int)> get_at = [&](int x, int y) -> int {
		if (x < 0 || x >= N) return 1;
		if (y < 0 || y >= N) return 1;
		return F[x][y];
	};

	int ans = 0;

	for (int i = 0; i < N; i++){
		for (int j = 0; j < N; j++){
			// center at (i, j)
			if (get_at(i, j))
				continue;

			int curr = 0;

			int y_max;
			for (int y = j; ; y++){
				y_max = y;
				if (get_at(i, y)){
					curr += y - j;
					break;
				}
			}

			int y_curr = y_max;
			for (int x = i+1; ; x++){
				if (get_at(x, j)){
					break;
				}
				int k = j;
				for (k = j; k < y_curr; k++){
					if (get_at(x, k)){
						break;
					}
				}
				curr += k - j;
				y_curr = k;
			}


			y_curr = y_max;
			for (int x = i-1; ; x--){
				if (get_at(x, j)){
					break;
				}
				int k;
				for (k = j; k < y_curr; k++){
					if (get_at(x, k)){
						break;
					}
				}
				curr += k - j;
				y_curr = k;
			}


			// down

			int y_min;
			for (int y = j; ; y--){
				y_min = y;
				if (get_at(i, y)){
					curr += j - y - 1;
					break;
				}
			}

			y_curr = y_min;
			for (int x = i+1; ; x++){
				if (get_at(x, j)){
					break;
				}
				int k;
				for (k = j; k > y_curr; k--){
					if (get_at(x, k)){
						break;
					}
				}
				curr += j - k - 1;
				y_curr = k;
			}


			y_curr = y_min;
			for (int x = i-1; ; x--){
				if (get_at(x, j)){
					break;
				}
				int k;
				for (k = j; k > y_curr; k--){
					if (get_at(x, k)){
						break;
					}
				}
				curr += j - k - 1;
				y_curr = k;
			}

			ans = max(ans, curr);
		}
	}

	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...