提出 #20535338


ソースコード 拡げる

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod=1e9+7;
void solve(){
}
int main(){
    ll n,k;
    cin>>n>>k;
    ll a[n];
    ll dp[n+1][k+1];
    ll prefix[n+1][k+1];
    for(int i=0;i<n;i++)
    cin>>a[i];
    for(int i=0;i<=n;i++)
    for(int j=0;j<=k;j++){   
        dp[0][j]=0; 
        dp[i][0]=1;
        prefix[0][j]=1; 
        prefix[i][0]=1;
    }
    dp[0][0]=1;
    prefix[0][0]=1;
    
    for(int i=1;i<=n;i++){
        for(int j=1;j<=k;j++){
            ll in=max(j-a[i-1],1ll*0),sum;
            
            if(in==0)
            sum=prefix[i-1][j]%mod;
            else sum=(prefix[i-1][j]%mod-prefix[i-1][in-1]%mod+mod)%mod;
            dp[i][j]=sum;
            prefix[i][j]=(prefix[i][j-1]%mod+dp[i][j]%mod)%mod;
            //cout<<i<<" "<<j<<" "<<dp[i][j];
        }
       // cout<<endl;
    }
    // for(int i=0;i<=n;i++){
    //     for(int j=0;j<=k;j++)
    //     cout<<dp[i][j];
    //     cout<<endl;
    // }
    cout<<dp[n][k];

}

提出情報

提出日時
問題 M - Candies
ユーザ noobita_
言語 C++ (GCC 9.2.1)
得点 100
コード長 1035 Byte
結果 AC
実行時間 460 ms
メモリ 161268 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 16
セット名 テストケース
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11
ケース名 結果 実行時間 メモリ
0_00 AC 6 ms 3588 KiB
0_01 AC 2 ms 3552 KiB
0_02 AC 2 ms 3564 KiB
0_03 AC 30 ms 11448 KiB
1_00 AC 2 ms 3672 KiB
1_01 AC 15 ms 6556 KiB
1_02 AC 3 ms 3636 KiB
1_03 AC 390 ms 161268 KiB
1_04 AC 450 ms 158756 KiB
1_05 AC 460 ms 158680 KiB
1_06 AC 452 ms 160412 KiB
1_07 AC 456 ms 159452 KiB
1_08 AC 447 ms 158472 KiB
1_09 AC 455 ms 160900 KiB
1_10 AC 458 ms 157696 KiB
1_11 AC 459 ms 159368 KiB