結果
問題 | No.670 log は定数 |
ユーザー | tnakao0123 |
提出日時 | 2018-03-25 17:31:38 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 1,919 ms / 4,000 ms |
コード長 | 1,446 bytes |
コンパイル時間 | 877 ms |
コンパイル使用メモリ | 89,120 KB |
実行使用メモリ | 7,168 KB |
最終ジャッジ日時 | 2024-06-25 06:05:23 |
合計ジャッジ時間 | 22,362 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1,919 ms
7,040 KB |
testcase_01 | AC | 1,892 ms
7,168 KB |
testcase_02 | AC | 1,866 ms
7,168 KB |
testcase_03 | AC | 1,885 ms
7,040 KB |
testcase_04 | AC | 1,904 ms
7,040 KB |
testcase_05 | AC | 1,877 ms
7,040 KB |
testcase_06 | AC | 1,878 ms
7,040 KB |
testcase_07 | AC | 1,853 ms
7,168 KB |
testcase_08 | AC | 1,868 ms
7,168 KB |
testcase_09 | AC | 1,873 ms
7,040 KB |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:59:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 59 | scanf("%d%d%lld", &n, &q, &seed); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
/* -*- coding: utf-8 -*- * * 670.cc: No.670 log は定数 - yukicoder */ #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<iostream> #include<string> #include<vector> #include<map> #include<set> #include<stack> #include<list> #include<queue> #include<deque> #include<algorithm> #include<numeric> #include<utility> #include<complex> #include<functional> using namespace std; /* constant */ const int MAX_N = 200000; const int PRE = 10000; const int BN = 16; const int BITS = 1 << BN; /* typedef */ typedef unsigned int ui; typedef unsigned long long ull; typedef vector<ui> vui; /* global variables */ ull seed; int acs[BITS + 1]; vui as[BITS]; /* subroutines */ inline ui next() { seed = seed ^ (seed << 13); seed = seed ^ (seed >> 7); seed = seed ^ (seed << 17); return (seed >> 33); } /* main */ int main() { int n, q; scanf("%d%d%lld", &n, &q, &seed); for (int i = 0; i < PRE; i++) next(); for (int i = 0; i < n; i++) { ui ai = next(); ui ab = ai >> BN; acs[ab + 1]++; as[ab].push_back(ai); } for (int ab = 0; ab < BITS; ab++) { acs[ab + 1] += acs[ab]; sort(as[ab].begin(), as[ab].end()); } ull sum = 0; for (int i = 0; i < q; i++) { ui x = next(); ui xb = x >> BN; int cnt = acs[xb] + (lower_bound(as[xb].begin(), as[xb].end(), x) - as[xb].begin()); sum ^= (ull)cnt * i; } printf("%llu\n", sum); return 0; }