Submission #1235512

#TimeUsernameProblemLanguageResultExecution timeMemory
1235512k1r1t0Soccer Stadium (IOI23_soccer)C++20
25 / 100
233 ms31912 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int biggest_stadium(int n, vector<vector<int>> f) {
	vector<array<int, 2>> seg;
	for (int i = 0; i < n; i++) {
		int mn = n, mx = -1;
		for (int j = 0; j < n; j++) {
			if (f[i][j]) continue;
			mn = min(mn, j);
			mx = max(mx, j);
		}
		for (int j = mn; j <= mx; j++)
			if (f[i][j]) return 0;
		seg.push_back({mn, -mx});
	}
	for (int j = 0; j < n; j++) {
		int mn = n, mx = -1;
		for (int i = 0; i < n; i++) {
			if (f[i][j]) continue;
			mn = min(mn, i);
			mx = max(mx, i);
		}
		for (int i = mn; i <= mx; i++)
			if (f[i][j]) return 0;
	}
	sort(begin(seg), end(seg));
	for (int i = 1; i < (int) seg.size(); i++)
		if (-seg[i][1] > -seg[i - 1][1]) return 0;
	int empty = 0;
	for (int i = 0; i < n; i++)
	for (int j = 0; j < n; j++)
		if (!f[i][j]) empty++;
	return empty;
}














/*
int main()
{
    int N;
    assert(1 == scanf("%d", &N));
    std::vector<std::vector<int>> F(N, std::vector<int>(N));
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            assert(1 == scanf("%d", &F[i][j]));
        }
    }
    fclose(stdin);

    int res = biggest_stadium(N, F);

    printf("%d\n", res);
    fclose(stdout);
    return 0;
}
//*/
#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...