結果
問題 | No.670 log は定数 |
ユーザー | KoshStorm |
提出日時 | 2018-03-25 19:32:19 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 2,213 bytes |
コンパイル時間 | 1,820 ms |
コンパイル使用メモリ | 164,864 KB |
最終ジャッジ日時 | 2024-11-14 20:24:00 |
合計ジャッジ時間 | 2,347 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp:18:62: error: extended character ‘ is not valid in an identifier 18 | #define TO_INT(vec,s) REP(i,s.length()){vec.push_back(s[i] - ‘0’);} | ^ main.cpp:18:62: error: extended character ’ is not valid in an identifier
ソースコード
#include <bits/stdc++.h> #define REP(i,n) for (long i=0;i<(n);i++) #define FOR(i,a,b) for (long i=(a);i<(b);i++) #define RREP(i,n) for(long i=n;i>=0;i--) #define RFOR(i,a,b) for(long i=(a);i>(b);i--) #define dump1d_arr(array) REP(i,array.size()) cerr << #array << "[" << (i) << "] ==> " << (array[i]) << endl; #define dump2d_arr(array) REP(i,array.size()) REP(j,array[i].size()) cerr << #array << "[" << (i) << "]" << "[" << (j) << "] ==> " << (array[i][j]) << endl; #define dump(x) cerr << #x << " => " << (x) << endl; #define CLR(vec) { REP(i,vec.size()) vec[i] = 0; } #define llINF (long long) 9223372036854775807 #define loINF (long) 2147483647 #define shINF (short) 32767 #define SORT(c) sort((c).begin(),(c).end()) #define MIN(vec) *min_element(vec.begin(), vec.end()); #define MAX(vec) *max_element(vec.begin(), vec.end()); #define UNIQ(vec) vec.erase(unique(vec.begin(), vec.end()),vec.end()); #define IN(n,m) (!(m.find(n) == m.end())) #define TO_INT(vec,s) REP(i,s.length()){vec.push_back(s[i] - ‘0’);} #define ENUM_v(vec) for (auto e : vec) #define dump_MAP(m) for(auto itr = m.begin(); itr != m.end(); ++itr) { cerr << itr->first << " --> " << itr->second << endl; } using namespace std; typedef vector<long long> VI; typedef vector<VI> VVI; 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); } int main(void) { int n, q; long div = 301010; ll sm = 0; cin >> n >> q >> seed; VI acc(101010,0); VVI hashed(101010,VI(0)); for (int i = 0; i < 10000; i++) next(); vector<int> a(n); for (int i = 0; i < n; i++) { a[i] = next(); acc[a[i]/div]++; hashed[a[i]/div].push_back(a[i]); } REP(i,acc.size()-1) acc[i+1] += acc[i]; REP(i,hashed.size()) SORT(hashed[i]); for (int i = 0; i < q; i++) { ll x = next(); ll cnt = 0; ll hash = x / div; if (hash > 0) cnt += acc[hash-1]; cnt += (lower_bound(hashed[hash].begin(),hashed[hash].end(),x) - hashed[hash].begin()); sm ^= ll(cnt) * i; } cout << sm << endl; return 0; }