提出 #48394120
ソースコード 拡げる
#include <bits/stdc++.h>
#include <atcoder/modint>
namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;
template<typename T>
using Q [[maybe_unused]] = std::queue<T>;
template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}
Num ga[8][8];
Num gb[8][8];
void solve(std::istream& is, std::ostream& os) {
Num h, w;
is >> h >> w;
std::map<Num, Num> ma;
for(Num y{0}; y<h; ++y) {
for(Num x{0}; x<w; ++x) {
Num a;
is >> a;
ga[y][x] = a;
ma[a] += 1;
}
}
std::map<Num, Num> mb;
for(Num y{0}; y<h; ++y) {
for(Num x{0}; x<w; ++x) {
Num b;
is >> b;
gb[y][x] = b;
mb[b] += 1;
}
}
for(const auto& [k,v] : ma) {
if (mb[k] != v) {
os << "-1\n";
return;
}
}
for(const auto& [k,v] : mb) {
if (ma[k] != v) {
os << "-1\n";
return;
}
}
Vec perm_y(h);
std::iota(perm_y.begin(), perm_y.end(), 0LL);
constexpr Num Inf = 1000000000000LL;
Num answer {Inf};
do {
Vec perm_x(w);
std::iota(perm_x.begin(), perm_x.end(), 0LL);
do {
bool matched {true};
for(Num from_y{0}; from_y<h; ++from_y) {
const auto to_y = perm_y.at(from_y);
for(Num from_x{0}; from_x<w; ++from_x) {
const auto to_x = perm_x.at(from_x);
matched &= (ga[to_y][to_x] == gb[from_y][from_x]);
}
}
if (matched) {
Num cty {0};
for(Num i{0}; i<h; ++i) {
for(Num j{i+1}; j<h; ++j) {
cty += perm_y.at(i) > perm_y.at(j);
}
}
Num ctx {0};
for(Num i{0}; i<w; ++i) {
for(Num j{i+1}; j<w; ++j) {
ctx += perm_x.at(i) > perm_x.at(j);
}
}
answer = std::min(answer, ctx + cty);
}
} while(std::next_permutation(perm_x.begin(), perm_x.end()));
} while(std::next_permutation(perm_y.begin(), perm_y.end()));
answer = (answer == Inf) ? -1 : answer;
os << answer << "\n";
}
int main(void) {
solve(std::cin, std::cout);
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - Swapping Puzzle |
| ユーザ | zettsut |
| 言語 | C++ 20 (gcc 12.2) |
| 得点 | 425 |
| コード長 | 2840 Byte |
| 結果 | AC |
| 実行時間 | 2 ms |
| メモリ | 3692 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 425 / 425 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example0.txt, example1.txt, example2.txt, example3.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, example0.txt, example1.txt, example2.txt, example3.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 000.txt | AC | 1 ms | 3500 KiB |
| 001.txt | AC | 1 ms | 3548 KiB |
| 002.txt | AC | 1 ms | 3692 KiB |
| 003.txt | AC | 1 ms | 3620 KiB |
| 004.txt | AC | 2 ms | 3560 KiB |
| 005.txt | AC | 1 ms | 3488 KiB |
| 006.txt | AC | 1 ms | 3624 KiB |
| 007.txt | AC | 1 ms | 3484 KiB |
| 008.txt | AC | 2 ms | 3684 KiB |
| 009.txt | AC | 1 ms | 3684 KiB |
| 010.txt | AC | 1 ms | 3648 KiB |
| 011.txt | AC | 1 ms | 3556 KiB |
| 012.txt | AC | 1 ms | 3456 KiB |
| 013.txt | AC | 1 ms | 3656 KiB |
| 014.txt | AC | 1 ms | 3548 KiB |
| 015.txt | AC | 1 ms | 3488 KiB |
| 016.txt | AC | 1 ms | 3552 KiB |
| 017.txt | AC | 1 ms | 3564 KiB |
| 018.txt | AC | 1 ms | 3484 KiB |
| 019.txt | AC | 1 ms | 3556 KiB |
| 020.txt | AC | 1 ms | 3496 KiB |
| 021.txt | AC | 1 ms | 3544 KiB |
| 022.txt | AC | 1 ms | 3640 KiB |
| 023.txt | AC | 1 ms | 3556 KiB |
| 024.txt | AC | 1 ms | 3492 KiB |
| 025.txt | AC | 1 ms | 3484 KiB |
| 026.txt | AC | 1 ms | 3500 KiB |
| 027.txt | AC | 1 ms | 3556 KiB |
| 028.txt | AC | 1 ms | 3456 KiB |
| 029.txt | AC | 1 ms | 3536 KiB |
| 030.txt | AC | 1 ms | 3456 KiB |
| 031.txt | AC | 1 ms | 3564 KiB |
| 032.txt | AC | 1 ms | 3552 KiB |
| 033.txt | AC | 1 ms | 3500 KiB |
| 034.txt | AC | 1 ms | 3548 KiB |
| 035.txt | AC | 1 ms | 3552 KiB |
| 036.txt | AC | 1 ms | 3692 KiB |
| 037.txt | AC | 1 ms | 3556 KiB |
| example0.txt | AC | 1 ms | 3556 KiB |
| example1.txt | AC | 1 ms | 3644 KiB |
| example2.txt | AC | 1 ms | 3620 KiB |
| example3.txt | AC | 1 ms | 3548 KiB |