結果
問題 | No.2561 みんな大好きmod 998 |
ユーザー | srjywrdnprkt |
提出日時 | 2023-12-07 14:08:13 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 393 ms / 4,000 ms |
コード長 | 1,060 bytes |
コンパイル時間 | 2,275 ms |
コンパイル使用メモリ | 210,476 KB |
実行使用メモリ | 221,796 KB |
最終ジャッジ日時 | 2024-09-27 02:07:25 |
合計ジャッジ時間 | 7,817 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 44 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; //mi~mxからN個を重複なしで選ぶ vector<vector<int>> combinations(int N, int mi, int mx){ vector<vector<int>> res; vector<int> idx; auto dfs=[&](auto self, int N, int mi, int mx, vector<vector<int>> &A)->void{ if (idx.size() == N){ A.push_back(idx); return; } else{ for (int i = mi; i <= mx; i++){ idx.push_back(i); self(self, N, i+1, mx, A); idx.pop_back(); } } }; dfs(dfs, N, mi, mx, res); return res; } int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); int N, K, ans=0; cin >> N >> K; ll S; vector<ll> A(N); for (int i=0; i<N; i++) cin >> A[i]; vector<vector<int>> v = combinations(K, 0, N-1); for (auto &x : v){ S = 0; for (auto y : x) S += A[y]; if (S % 998244353 <= S % 998) ans++; } ans %= 998; cout << ans << endl; return 0; }