Submission #1064004

#TimeUsernameProblemLanguageResultExecution timeMemory
1064004parsadox2Soccer Stadium (IOI23_soccer)C++17
6 / 100
431 ms301864 KiB
#include "soccer.h"
#include <bits/stdc++.h>

#define F first
#define S second

using namespace std;

const int N = 2e3 + 10;
int n;
vector<vector<int>> a;
vector <int> Dx = {1 , -1 , 0 , 0};
vector <int> Dy = {0 , 0 , 1 , -1};
bool marked[N][N];

bool Check(int aa , int bb)
{
    if(aa < 0 || aa >= n || bb < 0 || bb >= n || marked[aa][bb] || a[aa][bb] == 1)
        return false;
    return true;
}

int Dfs(pair<int , int> v)
{
    marked[v.F][v.S] = true;
    int cnt = 1;
    for(int d = 0 ; d < 4 ; d++)  if(Check(v.F + Dx[d] , v.S + Dy[d]))
        cnt += Dfs(make_pair(v.F + Dx[d] , v.S + Dy[d]));
    return cnt;
}

int Count(int ty , int x , int y)
{
    int res = 0;
    if(ty == 0)
    {
        for(int i = 0 ; i <= x ; i++)  for(int j = 0 ; j <= y ; j++)
            res += (1 - a[i][j]);
    }
    else if(ty == 1)
    {
        for(int i = 0 ; i <= x ; i++)  for(int j = y ; j < n ; j++)
            res += (1 - a[i][j]);
    }
    else if(ty == 2)
    {
        for(int i = x ; i < n ; i++)  for(int j = 0 ; j <= y ; j++)
            res += (1 - a[i][j]);
    }
    else
    {
        for(int i = x ; i < n ; i++)  for(int j = y ; j < n ; j++)
            res += (1 - a[i][j]);
    }
    return res;
}

int biggest_stadium(int nn, vector<std::vector<int>> F)
{
    n = nn;
    a = F;
    int ans = n * n;
    for(int i = 0 ; i < n ; i++)  for(int j = 0 ; j < n ; j++)  if(a[i][j] == 1)
    {
        ans--;
        int tmp = n * n;
        for(int ty = 0 ; ty < 4 ; ty++)
            tmp = min(tmp , Count(ty , i , j));
        ans -= tmp;
    }
    ans = max(ans , 1);
    pair <int , int> star;
    for(int i = 0 ; i < n ; i++)  for(int j = 0 ; j < n ; j++)  if(a[i][j] == 0)
        star = make_pair(i , j);
    ans = min(ans , Dfs(star));
    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...