結果
問題 | No.670 log は定数 |
ユーザー | むらため |
提出日時 | 2019-01-28 03:52:12 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 1,375 ms / 4,000 ms |
コード長 | 1,468 bytes |
コンパイル時間 | 4,379 ms |
コンパイル使用メモリ | 295,008 KB |
実行使用メモリ | 122,716 KB |
最終ジャッジ日時 | 2024-11-14 21:09:00 |
合計ジャッジ時間 | 19,777 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1,349 ms
122,076 KB |
testcase_01 | AC | 1,325 ms
121,432 KB |
testcase_02 | AC | 1,308 ms
121,568 KB |
testcase_03 | AC | 1,318 ms
120,924 KB |
testcase_04 | AC | 1,282 ms
122,460 KB |
testcase_05 | AC | 1,286 ms
121,692 KB |
testcase_06 | AC | 1,304 ms
122,716 KB |
testcase_07 | AC | 1,293 ms
121,180 KB |
testcase_08 | AC | 1,337 ms
121,692 KB |
testcase_09 | AC | 1,375 ms
121,436 KB |
ソースコード
#pragma GCC optimize("O3", "unroll-loops", "omit-frame-pointer", "inline") #pragma GCC option("arch=native", "tune=native", "no-zero-upper") #pragma GCC target("avx") #include <x86intrin.h> #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; ll next() { seed ^= (seed << 13); seed ^= (seed >> 7); seed ^= (seed << 17); return (seed >> 33); } const int len = 1 << 24; const int divi = 10; int B[len]; int AA[len][5]; 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 REP(i, n) { let xi = A[i] >> divi; AA[xi][AALen[xi]] = A[i]; AALen[xi] += 1; } int cnt = 0; REP(i, len) { B[i] = cnt; cnt += AALen[i]; } // impl ll sm = 0; REP(i, q) { ll x = next(); auto xi = x >> divi; ll cnt = B[xi]; if (AALen[xi] != 0) { if (AALen[xi] == 1) { if (AA[xi][0] < x) cnt++; } else { REP(j, AALen[xi]) { if (AA[xi][j] < x) cnt++; else break; } } } sm ^= cnt * i; } cout << sm << endl; return 0; }