QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#621344 | #9443. Left Equals Right | rikka_lyly# | WA | 2ms | 3996kb | C++20 | 1.5kb | 2024-10-08 13:21:40 | 2024-10-08 13:21:40 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define MAXN 10010
#define int ll
const ll MOD = 998244353;
int fact[MAXN];
void pre()
{
fact[0] = 1;
for (int i = 1; i < MAXN; i++)
{
fact[i] = fact[i - 1] * i % MOD;
}
}
ll qpow(ll a, ll b)
{
ll ans = 0;
while (b)
{
if(b & 1)
ans = ans * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return ans;
}
ll inv(ll x)
{
return qpow(x, MOD - 2);
}
ll C(int n, int m)
{
return fact[n] * inv(fact[m]) % MOD * inv(fact[n - m]) % MOD;
}
void solve()
{
int n;
cin >> n;
vector<int> a(n);
int sum = 0;
for (int i = 0; i < n; i++)
{
cin >> a[i];
sum += a[i];
}
if(sum % 2)
{
cout << 0 << '\n';
return;
}
vector dp(n + 1, vector<int>(sum / 2 + 1));
dp[0][0] = 1;
for (int tt = 0; tt < n; tt++)
{
int x = a[tt];
for (int i = tt + 1; i >= 1; i--)
{
for (int j = sum / 2; j >= x; j--)
{
dp[i][j] += dp[i - 1][j - x];
}
}
}
ll ans = 0;
for (int i = 0; i <= n; i++)
{
(ans += dp[i][sum / 2] * fact[i] % MOD * fact[n - i] % MOD) %= MOD;
}
cout << ans << '\n';
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t = 1;
pre();
while (t--)
{
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3860kb
input:
3 4 9 5
output:
4
result:
ok "4"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
2 100 100
output:
2
result:
ok "2"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3796kb
input:
8 3 2 6 3 1 2 4 5
output:
11520
result:
ok "11520"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
2 93 93
output:
2
result:
ok "2"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3568kb
input:
2 62 45
output:
0
result:
ok "0"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
3 32 68 36
output:
4
result:
ok "4"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
3 27 2 25
output:
4
result:
ok "4"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3692kb
input:
10 38 27 36 88 77 25 73 44 11 21
output:
126720
result:
ok "126720"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3628kb
input:
10 93 78 29 81 14 20 18 71 85 48
output:
0
result:
ok "0"
Test #10:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
9 57 19 88 13 55 43 27 10 74
output:
5760
result:
ok "5760"
Test #11:
score: 0
Accepted
time: 0ms
memory: 3544kb
input:
10 80 1 44 85 32 85 3 4 80 45
output:
0
result:
ok "0"
Test #12:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
10 56 72 93 39 70 78 3 10 84 48
output:
0
result:
ok "0"
Test #13:
score: 0
Accepted
time: 0ms
memory: 3824kb
input:
10 2 58 36 81 100 85 11 39 24 50
output:
118080
result:
ok "118080"
Test #14:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
10 70 23 3 26 98 18 63 32 22 25
output:
158400
result:
ok "158400"
Test #15:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
10 42 92 12 71 85 68 78 89 98 30
output:
0
result:
ok "0"
Test #16:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
10 26 5 25 35 77 46 81 13 73 32
output:
0
result:
ok "0"
Test #17:
score: 0
Accepted
time: 0ms
memory: 3880kb
input:
10 37 43 7 51 89 86 84 26 28 15
output:
103680
result:
ok "103680"
Test #18:
score: -100
Wrong Answer
time: 2ms
memory: 3996kb
input:
58 84 96 24 20 3 10 27 57 98 49 32 52 67 18 100 6 100 4 4 88 24 77 75 95 18 83 58 75 71 99 18 53 68 65 76 37 51 19 65 63 28 59 84 59 80 73 83 41 96 30 96 5 13 56 92 84 30 72
output:
429764033
result:
wrong answer 1st words differ - expected: '670239800', found: '429764033'