제출 #841325

#제출 시각아이디문제언어결과실행 시간메모리
841325Lawliet축구 경기장 (IOI23_soccer)C++17
3.50 / 100
228 ms31696 KiB
#include "soccer.h"
#include <bits/stdc++.h>

using namespace std;

bool checkIntervals(pair<int,int> a, pair<int,int> b)
{
    if( a.first > b.first )
        swap( a , b );

    if( a.first == b.first )
        return true;

    return b.second <= a.second;
}

bool isGood(int N, vector<vector<int>>& F)
{
    vector<pair<int,int>> intervals;

    for(int i = 0 ; i < N ; i++)
    {
        int numCells = 0;
        int minCell = N, maxCell = -1;

        for(int j = 0 ; j < N ; j++)
        {
            if( F[i][j] == 0 )
            {
                numCells++;
                minCell = min( minCell , j );
                maxCell = max( maxCell , j );
            }
        }

        if( numCells == 0 )
            continue;

        if( numCells != maxCell - minCell + 1 )
            return false;

        intervals.push_back( { minCell , maxCell } );
    }

    return checkIntervals( intervals.front() , intervals.back() );
}

int biggest_stadium(int N, vector<vector<int>> F)
{
    if( !isGood(N, F) )
        return -1;

    for(int i = 0 ; i < N ; i++)
        for(int j = 0 ; j < i ; j++)
            swap( F[i][j] , F[j][i] );

    if( !isGood(N, F) )
        return -1;

    int sum = 0;

    for(int i = 0 ; i < N ; i++)
        for(int j = 0 ; j < N ; j++)
            sum += 1 - F[i][j];

    return sum;
}
#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...