結果
問題 | No.2561 みんな大好きmod 998 |
ユーザー | *yudai25n |
提出日時 | 2023-12-02 14:56:26 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 17 ms / 4,000 ms |
コード長 | 2,030 bytes |
コンパイル時間 | 1,842 ms |
コンパイル使用メモリ | 172,952 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-26 17:43:14 |
合計ジャッジ時間 | 3,005 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 44 |
ソースコード
#include <bits/stdc++.h> #define OVERLOAD_REP(_1, _2, _3, name, ...) name #define REP1(i,n) for (auto i = std::decay_t<decltype(n)>{}; (i) != (n); ++(i)) #define REP2(i,l,r) for (auto i = (l); (i) != (r); ++(i)) #define rep(...) OVERLOAD_REP(__VA_ARGS__, REP2, REP1)(__VA_ARGS__) #define all(a) (a).begin(),(a).end() #define rall(a) (a).rbegin(),(a).rend() using namespace std; using ll = long long; using ull = unsigned long long; using P = pair<int,int>; using LP = pair<long long,long long>; using SP = pair<string,string>; using vi = vector<int>; using vl = vector<long long>; using vs = vector<string>; using vc = vector<char>; const int INF = 2e9; const long long LINF = 4e18; const int di[] = {0,1,0,-1,-1,1,-1,1}; const int dj[] = {1,0,-1,0,1,1,-1,-1}; template<class T> inline bool chmin(T& a, T b){if(a>b){a=b;return true;}return false;} template<class T> inline bool chmax(T& a, T b){if(a<b){a=b;return true;}return false;} void YesNo (bool ok , const string &s , const string &t) {if(ok) cout << s << endl; else cout << t << endl;} //-----def end-----// void solve () { long long n , x; cin >> n >> x; long long now = 1 , sum = 0; vector<long long> res; rep(i , n) { sum += now; res.push_back(now); now++; } if(sum > x) { cout << -1 << endl; return; } else { rep(i , n-1) { cout << res[i] << ' '; } cout << res[n-1]+(x-sum) << endl; } } int main () { int n , k; cin >> n >> k; vector<long long> a(n); rep(i , n) cin >> a[i]; long long res = 0; auto dfs = [&] (auto dfs , int d , int now , long long sum) -> void { if(d == k) { //cout << sum << endl; if((sum%998244353) <= (sum%998)) { res++; } return; } rep(i , now+1 , n) { //cout << sum << endl; dfs(dfs , d+1 , i , sum+a[i]); } }; dfs(dfs , 0 , -1 , 0); cout << res%998 << endl; return 0; }