이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
typedef __int128 lll;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pld;
#define MAX 9223372036854775807LL
#define MIN -9223372036854775807LL
#define INF 987654321
#define fi first
#define se second
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cout << fixed; cout.precision(10);
#define sp << " "
#define en << "\n"
#define compress(v) sort(v.begin(), v.end()), v.erase(unique(v.begin(), v.end()), v.end())
ll n;
ll a[2010][2010];
ll chk[2010][2010];
ll dx[] = {-1, 1, 0, 0};
ll dy[] = {0, 0, -1, 1};
ll biggest_stadium(ll N, vector<vector<ll> > F)
{
n = N;
for(ll i = 1 ; i <= n ; i++)
{
for(ll j = 1 ; j <= n ; j++)
a[i][j] = F[i - 1][j - 1];
}
ll ans = 0;
ll X, Y;
for(ll i = 1 ; i <= n ; i++)
{
for(ll j = 1 ; j <= n ; j++)
{
if(a[i][j] == 0)
X = i, Y = j;
}
}
queue<pll> q;
q.push({X, Y});
chk[X][Y] = 1;
while(!q.empty())
{
pll qq = q.front();
q.pop();
ans++;
for(ll d = 0 ; d < 4 ; d++)
{
ll nx = qq.fi + dx[d];
ll ny = qq.se + dy[d];
if(nx <= 0 || ny <= 0 || nx > n || ny > n)
continue;
if(chk[nx][ny] || a[nx][ny])
continue;
chk[nx][ny] = 1;
q.push({nx, ny});
}
}
vector<pll> vv;
for(ll i = 1 ; i <= n ; i++)
{
ll minn = INF, maxx = -INF;
for(ll j = 1 ; j <= n ; j++)
{
if(a[i][j] == 0)
{
minn = min(minn, j);
maxx = max(maxx, j);
}
}
if(minn == INF)
continue;
vv.push_back({minn, maxx});
for(ll j = minn + 1 ; j < maxx ; j++)
{
if(a[i][j] == 1)
return -1;
}
}
for(ll j = 1 ; j <= n ; j++)
{
ll minn = INF, maxx = -INF;
for(ll i = 1 ; i <= n ; i++)
{
if(a[i][j] == 0)
{
minn = min(minn, i);
maxx = max(maxx, i);
}
}
if(minn == INF)
continue;
for(ll i = minn + 1 ; i < maxx ; i++)
{
if(a[i][j] == 1)
return -1;
}
}
for(auto &i : vv)
{
for(auto &j : vv)
{
if(i.fi <= j.fi && j.se <= i.se)
continue;
if(j.fi <= i.fi && i.se <= j.se)
continue;
return -1;
}
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
soccer.cpp: In function 'll biggest_stadium(ll, std::vector<std::vector<int> >)':
soccer.cpp:51:12: warning: 'Y' may be used uninitialized in this function [-Wmaybe-uninitialized]
51 | chk[X][Y] = 1;
| ~~~~~~~~~~^~~
soccer.cpp:51:12: warning: 'X' may be used uninitialized in this function [-Wmaybe-uninitialized]
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |