#include <iostream>
#define int long long
constexpr int MAXN = 200, MOD = 998244353, MAXT = 3e5;
int c, n, T;
int a[MAXN + 5], t[MAXN + 5];
int sum[MAXN + 5];
int pow2[MAXT + 5];
int ans = 0;
int f[MAXT + 1];
int sf[MAXT + 1];
#undef int
int main()
#define int long long
{
std::cin.tie(nullptr)->sync_with_stdio(false);
std::cin >> c >> n >> T;
for (int i = 1; i <= n; ++i)
std::cin >> a[i];
for (int i = 1; i <= n; ++i)
std::cin >> t[i], sum[i] = (sum[i - 1] + t[i]) % MOD;
pow2[0] = 1;
for (int i = 1; i <= T; ++i)
pow2[i] = (pow2[i - 1] << 1) % MOD;
for (int i = 1; i <= T; ++i)
f[i] = 0, sf[i] = 0;
f[0] = 1, sf[0] = 1;
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= T; ++j)
sf[j] = (sf[j - 1] + f[j]) % MOD;
if (t[i] <= T)
ans = (ans + 1ll * a[i] * sf[T - t[i]] % MOD * pow2[n - i] % MOD) % MOD;
for (int j = T; j >= t[i]; --j)
f[j] = (f[j] + f[j - t[i]]) % MOD;
}
for (int i = 1; i <= T; ++i)
f[i] = 0, sf[i] = 0;
f[0] = 1, sf[0] = 1;
for (int i = n; i >= 1; --i)
{
for (int j = 1; j <= T; ++j)
sf[j] = (sf[j - 1] + f[j]) % MOD;
if (T >= sum[i])
ans = (ans + 1ll * a[i] * sf[T - sum[i]] % MOD * pow2[i - 1] % MOD) % MOD;
for (int j = T; j >= t[i]; --j)
f[j] = (f[j] + f[j - t[i]]) % MOD;
}
std::cout << ans << '\n';
return 0;
}
照着这篇题解打的,可是为啥 WA 啊