atcoder 緑 動的計画法
解決したいこと
https://atcoder.jp/contests/abc222/tasks/abc222_d
こちらの問題を動的計画法を用いて解いたのですが、テストケースで最大値を入力した際にどうやら違う答えが出力されるようです。
自力では、どこが誤っているのかわからなかったため、教えてください。
発生している問題・エラー
該当するソースコード
#include<bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); i++)
using namespace std;
int main() {
int n; cin >> n;
vector<int> A(n),B(n);
for(auto&a:A) cin>>a;
for(auto&b:B) cin>>b;
vector<vector<int>> dp(n+1,vector<int>(3001,0));
rep(i,3000) dp[0][i]=1;
rep(i,n){ //Cをi番目まで見たとき、最後の数がj以下である場合の数を求める
for(int j=A[i]; j<3001; j++){
if(j>B[i]) dp[i+1][j]=dp[i+1][j-1];
else dp[i+1][j]=dp[i][j]+dp[i+1][j-1];
dp[i+1][j]%=998244353;
}
}
cout<<dp[n][3000]<<endl;
return 0;
}
0