답안 #839782

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
839782 2023-08-30T15:51:12 Z model_code 축구 경기장 (IOI23_soccer) C++17
0 / 100
41 ms 80756 KB
// incorrect/largest_empty.cpp

#include "soccer.h"
#include <iostream>
#include <vector>
#include <set>
struct dsu
{
    std::vector<int> par;
    std::vector<int> sz;
    dsu(int n) : par(n, -1) { sz.assign(n, 1); }

    int get(int x)
    {
        if (par[x] == -1)
            return x;
        return par[x] = get(par[x]);
    }

    void merge(int x, int y)
    {
        int px = get(x), py = get(y);
        if (px == py)
            return;

        if (sz[px] > sz[py])
        {
            std::swap(px, py);
            std::swap(x, y); //:) lyft
        }

        sz[py] += sz[px];
        par[px] = py;
    }
};
const int MAXN = 3202;
int d0[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
dsu d(MAXN *MAXN);
int biggest_stadium(int N, std::vector<std::vector<int>> C)
{
    int ans = 0;

    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < N; ++j)
        {
            if (C[i][j] == 0)
            {
                for (int k = 0; k < 4; ++k)
                {
                    int ni = i + d0[k][0], nj = j + d0[k][1];
                    if (ni >= 0 && nj >= 0 && ni < N && nj < N)
                    {
                        if (0 == C[ni][nj])
                        {
                            d.merge(i * N + j, ni * N + nj);
                            ans = std::max(ans, d.sz[d.get(i * N + j)]);
                        }
                    }
                }
            }
        }
    }

    std::set<int> st;
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < N; ++j)
        {
            int dd = d.get(i * N + j);
            if (d.sz[dd] == ans)
                st.insert(dd);
        }
    }

    std::cerr << st.size() << "\n";

    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 41 ms 80756 KB wrong
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 34 ms 80544 KB ok
2 Correct 39 ms 80544 KB ok
3 Correct 37 ms 80540 KB ok
4 Correct 33 ms 80548 KB ok
5 Incorrect 37 ms 80552 KB wrong
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 34 ms 80544 KB ok
2 Correct 39 ms 80544 KB ok
3 Incorrect 38 ms 80532 KB wrong
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 41 ms 80756 KB wrong
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 41 ms 80756 KB wrong
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 41 ms 80756 KB wrong
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 41 ms 80756 KB wrong
2 Halted 0 ms 0 KB -