結果
問題 |
No.8016 unordered_mapなるたけ落とすマン
|
ユーザー |
|
提出日時 | 2020-05-23 17:07:08 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 115 ms / 1,000 ms |
コード長 | 802 bytes |
コンパイル時間 | 725 ms |
コンパイル使用メモリ | 50,048 KB |
最終ジャッジ日時 | 2025-01-10 15:19:34 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 48 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:31:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 31 | scanf("%d%d", &n, &m); | ~~~~~^~~~~~~~~~~~~~~~ main.cpp:36:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 36 | scanf("%llu", &a); | ~~~~~^~~~~~~~~~~~ main.cpp:41:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 41 | scanf("%llu", &a); | ~~~~~^~~~~~~~~~~~
ソースコード
#include <cstdio> #include <array> #include <vector> using u32 = unsigned int; using u64 = unsigned long long int; template <typename T, int n> class Hash { std::array<std::vector<std::pair<u64, T> >, 1<<(n+2)> v; u32 h(u64 a) const { static constexpr u64 r = 11995408973635179863ULL; return a * r >> (64 - (n+2)); } public: T &operator[](u64 a){ u32 i = h(a); for(auto &w: v[i]){ if(w.first == a) return w.second; } v[i].emplace_back(a, T()); return v[i].back().second; } }; int n, m; int main(){ scanf("%d%d", &n, &m); Hash<u64, 17> h; for(int i = 0; i < n; i++){ u64 a; scanf("%llu", &a); ++h[a]; } for(int i = 0; i < m; i++){ u64 a; scanf("%llu", &a); printf("%llu%c", h[a], " \n"[i == m-1]); } return 0; }