結果
問題 |
No.2178 Payable Magic Items
|
ユーザー |
![]() |
提出日時 | 2025-04-22 05:47:20 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 244 ms / 4,000 ms |
コード長 | 1,039 bytes |
コンパイル時間 | 2,577 ms |
コンパイル使用メモリ | 208,672 KB |
実行使用メモリ | 25,160 KB |
最終ジャッジ日時 | 2025-04-22 05:47:28 |
合計ジャッジ時間 | 6,496 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 23 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define int ll using ll = long long; const int MOD = 1e9 + 7; int32_t main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; int k; cin >> k; vector<vector<int>> a(n); for (auto &v : a) { string s; cin >> s; v.resize(k); for (int i = 0; i < k; i++) { v[i] = s[i] - '0'; } } auto f = [&] (vector<int>& v) { int ret = 0; for (int i = 0; i < v.size(); i++) { ret = ret * 5 + v[i]; } return ret; }; vector vis(25*25*25*25, 0); sort(a.rbegin(), a.rend()); auto go = [&] (auto&& self, vector<int>& v) { if (vis[f(v)]) return; vis[f(v)] = 1; for (int i = 0; i < k; i++) { if (v[i] > 0) { v[i]--; self(self, v); v[i]++; } } }; int ans = 0; for (auto v : a) { if (vis[f(v)]) ans++; go(go, v); } cout << ans << endl; }