結果
| 問題 | No.5022 XOR Printer |
| コンテスト | |
| ユーザー |
SnowBeenDiding
|
| 提出日時 | 2025-07-26 14:29:39 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 2,839 bytes |
| 記録 | |
| コンパイル時間 | 5,222 ms |
| コンパイル使用メモリ | 335,416 KB |
| 実行使用メモリ | 7,720 KB |
| スコア | 5,079,781,329 |
| 最終ジャッジ日時 | 2025-07-26 14:29:47 |
| 合計ジャッジ時間 | 7,274 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 50 |
コンパイルメッセージ
In lambda function,
inlined from ‘main()::<lambda(int, int)>’ at main.cpp:54:13,
inlined from ‘int main()’ at main.cpp:100:14:
main.cpp:29:19: warning: ‘one_i’ may be used uninitialized [-Wmaybe-uninitialized]
29 | while (ni > i) {
| ~~~^~~
main.cpp: In function ‘int main()’:
main.cpp:78:13: note: ‘one_i’ was declared here
78 | int one_i, one_j, one_dist = 1e9;
| ^~~~~
In lambda function,
inlined from ‘main()::<lambda(int, int)>’ at main.cpp:54:13,
inlined from ‘int main()’ at main.cpp:100:14:
main.cpp:37:19: warning: ‘one_j’ may be used uninitialized [-Wmaybe-uninitialized]
37 | while (nj > j) {
| ~~~^~~
main.cpp: In function ‘int main()’:
main.cpp:78:20: note: ‘one_j’ was declared here
78 | int one_i, one_j, one_dist = 1e9;
| ^~~~~
In lambda function,
inlined from ‘main()::<lambda(int, int)>’ at main.cpp:49:13,
inlined from ‘int main()’ at main.cpp:102:13:
main.cpp:29:19: warning: ‘zero_i’ may be used uninitialized [-Wmaybe-uninitialized]
29 | while (ni > i) {
| ~~~^~~
main.cpp: In function ‘int main()’:
main.cpp:79:13: note: ‘zero_i’ was declared here
79 | int zero_i, zero_j, zero_dist = 1e9;
| ^~~~~~
In lambda function,
inlined from ‘main()::<lambda(int, int)>’ at main.cpp:49:13,
inlined from ‘int main()’ at main.cpp:102:13:
main.cpp:37:19: warning: ‘zero_j’ may be used uninitialized [-Wmaybe-uninitialized]
37 | while (nj > j) {
| ~~~^~~
main.cpp: In function ‘int main()’:
main.cpp:79:21: note: ‘zero_j’ was declared here
79 | int zero_i, zero_j, zero_dist = 1e9;
| ^~~~~~
ソースコード
#include <bits/stdc++.h>
#include <atcoder/all>
#define rep(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++)
using namespace atcoder;
using namespace std;
typedef long long ll;
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
int n = v.size();
rep(i, 0, n) { os << v[i] << " \n"[i == n - 1]; }
return os;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout << fixed << setprecision(12);
int n, t;
cin >> n >> t;
vector a(n, vector<int>(n));
rep(i, 0, n) rep(j, 0, n) cin >> a[i][j];
int hand = 0;
int ni = 0, nj = 0;
string ans;
auto move = [&](int i, int j) {
while (ni > i) {
ans += 'U';
ni--;
}
while (ni < i) {
ans += 'D';
ni++;
}
while (nj > j) {
ans += 'L';
nj--;
}
while (nj < j) {
ans += 'R';
nj++;
}
ni = i;
nj = j;
};
auto copy = [&](int i, int j) {
move(i, j);
ans += 'C';
hand ^= a[i][j];
};
auto write = [&](int i, int j) {
move(i, j);
ans += 'W';
a[i][j] ^= hand;
};
rep(i, 0, n) rep(j, 0, n) {
if ((hand == 0) && ((a[i][j] >> 19) & 1)) {
copy(i, j);
}
}
rep(i, 0, n) {
for (int j = 0; j < n; j++) {
if (!((a[i][j] >> 19) & 1)) {
write(i, j);
}
}
}
for (int d = 18; d >= 0; d--) {
vector<vector<int>> exclusion(n, vector<int>(n));
int mask = (1 << 20) - (1 << (d + 2));
rep(i, 0, n) rep(j, 0, n) {
if ((a[i][j] & mask) != mask) {
exclusion[i][j] = 1;
}
}
int one_i, one_j, one_dist = 1e9;
int zero_i, zero_j, zero_dist = 1e9;
rep(i, 0, n) rep(j, 0, n) {
if (exclusion[i][j]) continue;
int dist = abs(i - ni) + abs(j - nj);
if ((a[i][j] >> d) & 1) {
if (dist < one_dist) {
one_dist = dist;
one_i = i;
one_j = j;
}
} else {
if (dist < zero_dist) {
zero_dist = dist;
zero_i = i;
zero_j = j;
}
}
}
if (one_dist == 1e9 || zero_dist == 1e9) {
break;
}
write(one_i, one_j);
copy(one_i, one_j);
copy(zero_i, zero_j);
rep(i, 0, n) rep(j, 0, n) {
if (exclusion[i][j]) continue;
if (!(a[i][j] >> d & 1)) {
write(i, j);
}
}
}
ans = ans.substr(0, t);
for (auto &c : ans) {
cout << c << '\n';
}
}
SnowBeenDiding