結果
| 問題 | No.3739 Stronger Network |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-19 16:33:58 |
| 言語 | C++23 (gcc 15.3.0 + boost 1.92.0 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 1,670 bytes |
| 記録 | |
| コンパイル時間 | 2,641 ms |
| コンパイル使用メモリ | 344,152 KB |
| 実行使用メモリ | 10,048 KB |
| 最終ジャッジ日時 | 2026-09-19 16:34:04 |
| 合計ジャッジ時間 | 5,966 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 32 WA * 16 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
int H, W; cin >> H >> W;
if (H % 2 == 1 || W % 2 == 1) {
cout << "-1\n";
return 0;
}
vector<int> gh, gw;
for (int i = 1; i < 20; i++) {
vector<int> gi;
for (int j = 0; j < (1 << i); j++) {
gi.push_back(1 << countr_zero((unsigned)(j + 1)));
}
gi.back() = (1 << (i - 1));
if (H & (1 << i)) {
vector<int> ngh;
if (gh.size() == 0) {
ngh = gi;
} else {
ngh.push_back((1 << i));
for (int j: gh) ngh.push_back(j);
ngh.back() = (1 << i);
int l = find(gi.begin(), gi.end(), gh.back()) - gi.begin();
for (int j = 1; j < (1 << i); j++) ngh.push_back(gi[(l + j) % (1 << i)]);
}
gh = ngh;
}
if (W & (1 << i)) {
vector<int> ngw;
if (gw.size() == 0) {
ngw = gi;
} else {
ngw.push_back((1 << i));
for (int j: gw) ngw.push_back(j);
ngw.back() = (1 << i);
int l = find(gi.begin(), gi.end(), gw.back()) - gi.begin();
for (int j = 1; j < (1 << i); j++) ngw.push_back(gi[(l + j) % (1 << i)]);
}
gw = ngw;
}
}
for (int i = 0; i < H - 1; i++) gh[i + 1] ^= gh[i];
for (int i = 0; i < W - 1; i++) gw[i + 1] ^= gw[i];
if ((H - 1) * bit_ceil((unsigned)W) + W - 1 < (W - 1) * bit_ceil((unsigned)H) + H - 1) {
int c = bit_ceil((unsigned)W);
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cout << gh[i] * c + gw[j] << (j == W - 1 ? '\n' : ' ');
}
}
} else {
int c = bit_ceil((unsigned)H);
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cout << gh[i] + gw[j] * c << (j == W - 1 ? '\n' : ' ');
}
}
}
}