結果
問題 |
No.3223 K-XOR Increasing Sequence
|
ユーザー |
|
提出日時 | 2025-08-01 22:50:51 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,910 bytes |
コンパイル時間 | 1,933 ms |
コンパイル使用メモリ | 198,840 KB |
実行使用メモリ | 18,936 KB |
最終ジャッジ日時 | 2025-08-01 22:51:23 |
合計ジャッジ時間 | 21,574 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 8 WA * 62 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; const ll mod = 1e9 + 7; const int N = 200005; const int INF = 0x3f3f3f3f; int main() { ll n, k, x, y; cin >> n >> k >> x >> y; if (k == 1) { if (x + n - 2 < y) { cout << "Yes\n"; vector<ll> a(n); a[0] = x; for (int i = 1; i < n - 1; i++) a[i] = a[i - 1] + 1; a[n - 1] = y; cout << (int)a.size() << "\n"; for (auto x : a) cout << x << " "; cout << "\n"; } else { cout << "No\n"; } } else { if (y == 0) { cout << "No\n"; } else { cout << "Yes\n"; vector<ll> a(n); ll q = (n - 1) / k, r = (n - 1) % k; if (q == 0) { a[0] = x; ll xs = x; for (int i = 1; i < n - 1; i++) a[i] = 0; if (n > 2) a[n - 2] = xs; a[n - 1] = y; } else { a[0] = x; ll val = x; for (int i = 0; i < q; i++) { int pos = i * k; a[pos] = val; if (pos + 1 < n) a[pos + 1] = val; for (int j = 2; j < k && pos + j < n; j++) a[pos + j] = 0; val = 1; } for (int i = q * k + 1; i < n - 1; i++) a[i] = 1; a[n - 1] = y; vector<ll> vec(n); vec[0] = x; vec[1] = x; for (int i = 2; i < k; i++) vec[i] = 0; ll xs2 = 0; for (int i = k; i < n - 1; i++) { ll pre = vec[i - k]; vec[i] = xs2 + 1; xs2 ^= pre; xs2 ^= vec[i]; } ll tg = 0, xs3 = 0; for (int i = n - 1 - k; i < n - 1; i++) xs3 ^= vec[i]; ll lastv = vec[n - 2]; xs3 ^= lastv; ll rlsv = xs3 ^ tg; ll sum = 0; for (int i = n - 1 - k - 1; i < n - 2; i++) sum ^= vec[i]; if (rlsv > sum) { vec[n - 2] = rlsv; } else { if (n >= 4) { a[0] = x; a[1] = 0; a[2] = x; a[n - 1] = y; ll s = 0; if (n - 1 - k >= 0) s ^= a[n - 1 - k]; if (n - 2 - k >= 0) s ^= a[n - 2 - k]; if (n - 3 - k >= 0) s ^= a[n - 3 - k]; a[n - 2] = s; } } cout << (int)a.size() << "\n"; for (auto x : a) cout << x << " "; cout << "\n"; } } } return 0; }