結果
問題 |
No.1645 AB's abs
|
ユーザー |
![]() |
提出日時 | 2021-08-13 21:33:21 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 13 ms / 2,000 ms |
コード長 | 1,302 bytes |
コンパイル時間 | 1,775 ms |
コンパイル使用メモリ | 171,540 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-03 17:26:40 |
合計ジャッジ時間 | 3,137 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define int long long using vec_int = vector<int>; using vec_ii = vector<vec_int>; using vec_iii = vector<vec_ii>; using vec_iiii = vector<vec_iii>; using P = pair<int,int>; using T = tuple<int,int,int>; using ll = long long; using ld = long double; #define rep(i, n) for(int i = 0; i < (int)(n); i++) void cout_line(vector<int> &a){ for(int i=0;i<a.size();i++){ if(i<a.size()-1){ cout<<a.at(i)<<" "; }else{ cout<<a.at(i)<<endl; } } } int charToInt(char c){ char zero_num = '0'; return (int)c - (int)zero_num; } signed main(){ int N; cin>>N; vec_int A(N); rep(i,N)cin>>A.at(i); vector<int> DP(20001, 0); DP.at(10000) = 1; int MOD = 998244353; for(int i=0;i<N;i++){ int num = A.at(i); vec_int DP2(20001, 0); for(int i=20000-num;i>=0;i--){ DP2.at(i+num) += DP.at(i); DP2.at(i+num) %= MOD; } for(int i=num;i<=20000;i++){ DP2.at(i-num) += DP.at(i); DP2.at(i-num) %= MOD; } DP = DP2; } int ans = 0; for(int i=0;i<=20000;i++){ int num = abs(10000-i); ans += DP.at(i)*num; ans %= MOD; } cout<<ans<<endl; return 0; }