結果
問題 | No.670 log は定数 |
ユーザー | 0w1 |
提出日時 | 2018-04-04 23:57:55 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 2,162 ms / 4,000 ms |
コード長 | 889 bytes |
コンパイル時間 | 2,305 ms |
コンパイル使用メモリ | 206,704 KB |
実行使用メモリ | 6,784 KB |
最終ジャッジ日時 | 2024-06-26 08:58:31 |
合計ジャッジ時間 | 26,934 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2,159 ms
6,656 KB |
testcase_01 | AC | 2,159 ms
6,656 KB |
testcase_02 | AC | 2,161 ms
6,784 KB |
testcase_03 | AC | 2,158 ms
6,656 KB |
testcase_04 | AC | 2,147 ms
6,656 KB |
testcase_05 | AC | 2,141 ms
6,784 KB |
testcase_06 | AC | 2,150 ms
6,784 KB |
testcase_07 | AC | 2,162 ms
6,528 KB |
testcase_08 | AC | 2,160 ms
6,656 KB |
testcase_09 | AC | 2,141 ms
6,528 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; uint64_t SEED; int next() { SEED ^= SEED << 13; SEED ^= SEED >> 7; SEED ^= SEED << 17; return SEED >> 33; } const int BS = 1 << 16; const int BC = 1 << 15; int tot[BC], stot[BC + 1]; vector<int> vals[BC]; signed main() { int N, Q; cin >> N >> Q >> SEED; for (int i = 0; i < 10000; ++i) next(); vector<int> A(N); for (int i = 0; i < N; ++i) A[i] = next(); sort(A.begin(), A.end()); for (int i = 0; i < N; ++i) { ++tot[A[i] / BS]; vals[A[i] / BS].emplace_back(A[i]); } for (int i = 0; i < BC; ++i) { stot[i + 1] = stot[i] + tot[i]; } int64_t ans = 0; for (int i = 0; i < Q; ++i) { int x = next(); int cnt = stot[x / BS]; cnt += lower_bound(vals[x / BS].begin(), vals[x / BS].end(), x) - vals[x / BS].begin(); ans ^= 1LL * cnt * i; } cout << ans << endl; return 0; }