Submission #17647521


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

pair<int, int> adjacent_xy(int x, int y, int i) // i は隣接する正六角形の番号
{
    int dy[] = {0, -1, -1, 0, 1, 1};
    int dx1[] = {1, 1, 0, -1, 0, 1};
    int dx2[] = {1, 0, -1, -1, -1, 0};
    if (y % 2 == 1)
        return {x + dx1[i], y + dy[i]};
    return {x + dx2[i], y + dy[i]};
}

int main()
{
    int grid[102][102] = {};
    bool seen[102][102] = {};
    int W, H;
    cin >> W >> H;
    W += 2;
    H += 2;
    for (int i = 1; i < H - 1; ++i) {
        for (int j = 1; j < W - 1; ++j)
            cin >> grid[i][j];
    }
    queue<pair<int, int>> que;
    que.push({0, 0});
    seen[0][0] = true;
    int cnt = 0;
    while (!que.empty()) {
        auto pr = que.front();
        que.pop();
        int x = pr.first;
        int y = pr.second;
        for (int i = 0; i < 6; ++i) {
            auto next = adjacent_xy(x, y, i);
            int x2 = next.first;
            int y2 = next.second;
            if (y2 < 0 || H <= y2 || x2 < 0 || W <= x2) 
                continue;
            if (grid[y2][x2] == 1) {
                ++cnt;
                continue;
            }
            if (seen[y2][x2])
                continue;
            que.push({x2, y2});
            seen[y2][x2] = true;
        }
    }
    cout << cnt << endl;
}

Submission Info

Submission Time
Task E - イルミネーション (Illumination)
User atug
Language C++ (GCC 9.2.1)
Score 100
Code Size 1316 Byte
Status AC
Exec Time 8 ms
Memory 3656 KiB

Judge Result

Set Name set01 set02 set03 set04 set05
Score / Max Score 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
Case Name Status Exec Time Memory
data1 AC 5 ms 3656 KiB
data2 AC 3 ms 3580 KiB
data3 AC 6 ms 3632 KiB
data4 AC 6 ms 3504 KiB
data5 AC 8 ms 3576 KiB