結果
| 問題 |
No.670 log は定数
|
| コンテスト | |
| ユーザー |
Nachia
|
| 提出日時 | 2020-10-11 17:41:06 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 446 ms / 4,000 ms |
| コード長 | 765 bytes |
| コンパイル時間 | 774 ms |
| コンパイル使用メモリ | 69,592 KB |
| 実行使用メモリ | 8,576 KB |
| 最終ジャッジ日時 | 2024-07-20 17:30:22 |
| 合計ジャッジ時間 | 6,170 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
ソースコード
#include <iostream>
#include <algorithm>
using namespace std;
using LL = long long;
using ULL = unsigned long long;
using UL = unsigned int;
#define rep(i,n) for(UL i=0; i<(n); i++)
ULL seed;
UL getRandom670() {
seed = seed ^ (seed << 13);
seed = seed ^ (seed >> 7);
seed = seed ^ (seed << 17);
return (seed >> 33);
}
UL N, Q;
UL A[200001];
UL C[(1 << 20) + 1] = {};
UL query(UL x) {
UL p = C[x >> 11];
while (A[p] < x) p++;
return p;
}
int main() {
scanf("%u%u%llu", &N, &Q, &seed);
rep(i, 10000) getRandom670();
rep(i, N) A[i] = getRandom670();
A[N] = ~0u;
sort(A, A + N);
rep(i, N) C[(A[i] >> 11) + 1]++;
rep(i, 1 << 20) C[i + 1] += C[i];
ULL ans = 0;
rep(i, Q) ans ^= ULL(query(getRandom670())) * i;
printf("%llu\n", ans);
return 0;
}
Nachia