結果
| 問題 |
No.2819 Binary Binary-Operator
|
| コンテスト | |
| ユーザー |
hiromi_ayase
|
| 提出日時 | 2024-07-26 22:58:18 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 43 ms / 2,000 ms |
| コード長 | 1,583 bytes |
| コンパイル時間 | 5,509 ms |
| コンパイル使用メモリ | 316,308 KB |
| 実行使用メモリ | 25,580 KB |
| 平均クエリ数 | 3.00 |
| 最終ジャッジ日時 | 2024-07-26 22:58:31 |
| 合計ジャッジ時間 | 10,753 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 64 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using i32 = int;
using u32 = unsigned int;
using i64 = long long;
using u64 = unsigned long long;
#define FAST_IO \
ios::sync_with_stdio(false); \
cin.tie(0);
const i64 INF = 1001001001001001001;
using Modint = atcoder::static_modint<998244353>;
pair<int, vector<int>> f(int X, int Y) {
for (int k = 3; k <= 24; k ++) {
for (int i = 0; i < (1 << k); i++) {
set<pair<int, int>> set;
for (int b = 0; b < (1 << 4); b ++) {
int v = 0;
int prod[] = {(b >> 0) & 1, (b >> 1) & 1, (b >> 2) & 1, (b >> 3) & 1};
for (int j = 0; j < k; j++) {
int u = (i >> j) & 1;
v = j == 0 ? u : prod[(u << 1) + v];
}
int prodXY = prod[(Y << 1) + X];
set.insert({prodXY, v});
}
if (set.size() == 2) {
auto p = *set.begin();
auto q = *set.rbegin();
if (p.first != q.first && p.second != q.second) {
int rev = p.first == p.second ? 1 : -1;
vector<int> res;
for (int j = 0; j < k; j++) {
res.push_back((i >> j) & 1);
}
return {rev, res};
}
}
}
}
return {0, {}};
}
int main() {
FAST_IO
auto ans = 0LL;
int X, Y;
cin >> X >> Y;
auto [rev, res] = f(X, Y);
cout << res.size() << endl;
if (res.size() == 0) {
return 0;
}
for (int i = 0; i < res.size(); i++) {
cout << res[i] << " ";
}
cout << endl;
int Z;
cin >> Z;
if (rev == -1) {
Z = 1 - Z;
}
cout << Z << endl;
}
hiromi_ayase