結果

問題 No.3676 Cuboid Alignment
コンテスト
ユーザー 👑 みうね
提出日時 2026-08-10 17:36:36
言語 C++23
(gcc 15.3.0 + boost 1.92.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
TLE  
実行時間 -
コード長 1,083 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,040 ms
コンパイル使用メモリ 168,388 KB
実行使用メモリ 6,272 KB
最終ジャッジ日時 2026-09-04 22:18:20
合計ジャッジ時間 6,628 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 18 TLE * 1 -- * 23
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int X, Y, Z;
    std::cin >> X >> Y >> Z;
    const int M = X * Y * Z;
    auto id = [=](int x, int y, int z) { return x + X * (y + Y * z); };
    std::vector<char> A(M), B(M);
    std::string row;
    for (auto* cuboid : {&A, &B})
        for (int z = 0; z < Z; ++z) for (int y = 0; y < Y; ++y) {
            std::cin >> row;
            for (int x = 0; x < X; ++x) (*cuboid)[id(x, y, z)] = row[x];
        }
    int answer = M;
    for (int sz = 0; sz < Z; ++sz) for (int sy = 0; sy < Y; ++sy) for (int sx = 0; sx < X; ++sx) {
        int bad = 0;
        for (int z = 0; z < Z; ++z) for (int y = 0; y < Y; ++y) for (int x = 0; x < X; ++x) {
            char a = A[id(x, y, z)];
            char b = B[id((x - sx + X) % X, (y - sy + Y) % Y, (z - sz + Z) % Z)];
            bad += (a == 'B' && b == 'W') || (a == 'W' && b == 'B');
        }
        answer = std::min(answer, bad);
    }
    std::cout << answer << '\n';
}
0