제출 #861678

#제출 시각아이디문제언어결과실행 시간메모리
861678faustaadpSoccer Stadium (IOI23_soccer)C++17
12 / 100
4573 ms80976 KiB
#include "soccer.h"
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
#define pb push_back
ll b[2010][2010];
int cek(int N, std::vector<std::vector<int>> F)
{
    ll sum = 0;
    for(ll i = 0; i < N; i++)
        for(ll j = 0; j < N; j++)
            sum += (1 - F[i][j]);
    ll te = 0;
    for(ll i = 0; i < N; i++)
        for(ll j = 0; j < N; j++)
        {
            if(F[i][j])continue;
            ll ha = 0;
            te++;
            for(ll k = i; k < N; k++)
            {
                if(F[k][j])break;
                for(ll l = j; l < N; l++)
                {
                    if(F[k][l])break;
                    ha += (b[k][l] != te);
                    b[k][l] = te;
                }
                for(ll l = j; l >= 0; l--)
                {
                    if(F[k][l])break;
                    ha += (b[k][l] != te);
                    b[k][l] = te;
                }
            }
            // cout << ha << "_\n";
            for(ll k = i; k >= 0; k--)
            {
                if(F[k][j])break;
                for(ll l = j; l < N; l++)
                {
                    if(F[k][l])break;
                    ha += (b[k][l] != te);
                    b[k][l] = te;
                }
                for(ll l = j; l >= 0; l--)
                {
                    if(F[k][l])break;
                    ha += (b[k][l] != te);
                    b[k][l] = te;
                }
            }

            for(ll k = j; k < N; k++)
            {
                if(F[i][k])break;
                for(ll l = i; l < N; l++)
                {
                    if(F[l][k])break;
                    ha += (b[l][k] != te);
                    b[l][k] = te;
                }
                for(ll l = i; l >= 0; l--)
                {
                    if(F[l][k])break;
                    ha += (b[l][k] != te);
                    b[l][k] = te;
                }
            }
            for(ll k = j; k >= 0; k--)
            {
                if(F[i][k])break;
                for(ll l = i; l < N; l++)
                {
                    if(F[l][k])break;
                    ha += (b[l][k] != te);
                    b[l][k] = te;
                }
                for(ll l = i; l >= 0; l--)
                {
                    if(F[l][k])break;
                    ha += (b[l][k] != te);
                    b[l][k] = te;
                }
            }
            // cout << ha << "_\n";
            if(ha != sum)
                return 0;
        }
    return sum;
}
int biggest_stadium(int N, std::vector<std::vector<int>> F)
{
    return cek(N, F);
    // for(ll i = 0; i < N; i++)
    //     for(ll j = 0; j < N; j++)
    //     {
    //         if(F[i][j])
    //         {
    //             return N * N - min(i + 1, N - i) * min(j + 1, N - j);
    //         }
    //     }
    // return N * N;
}
#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...