結果
問題 |
No.670 log は定数
|
ユーザー |
|
提出日時 | 2019-01-28 03:25:28 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2,119 ms / 4,000 ms |
コード長 | 1,332 bytes |
コンパイル時間 | 3,066 ms |
コンパイル使用メモリ | 186,924 KB |
実行使用メモリ | 7,424 KB |
最終ジャッジ日時 | 2024-11-14 20:59:32 |
合計ジャッジ時間 | 26,476 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 |
ソースコード
#pragma GCC optimize("O3") #pragma GCC target("avx") #include "bits/stdc++.h" using namespace std; // #define int long long #define REP(i, n) for (int i = 0; i < (n); i++) #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define FORR(i, a, b) for (int i = (b - 1); i >= (a); i--) #define ALL(a) begin(a), end(a) #define let const auto using ll = long long; using ull = unsigned long long; ull seed; int next() { seed = seed ^ (seed << 13); seed = seed ^ (seed >> 7); seed = seed ^ (seed << 17); return (seed >> 33); } const int len = 1 << 16; const int divi = 16; int B[len]; // int AA[len][100]; // int AALen[len] = {}; signed main() { int n, q; cin >> n >> q >> seed; REP(i, 10000) next(); vector<int> A(n); REP(i, n) A[i] = next(); sort(A.begin(), A.end()); // AA vector<vector<int>> AA(len); REP(i, n) AA[(A[i] >> divi)].push_back(A[i]); // REP(i, n) { // AALen += 1; // AA[(A[i] >> divi)].push_back(A[i]); // ; // } int cnt = 0; REP(i, len) { B[i] = cnt; cnt += AA[i].size(); } // impl ll sm = 0; REP(i, q) { int x = next(); int xi = x >> divi; ll cnt = B[xi]; if (AA[xi].size() != 0) { cnt += distance(begin(AA[xi]), lower_bound(begin(AA[xi]), end(AA[xi]), x)); } sm ^= cnt * i; } cout << sm << endl; return 0; }