提出 #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 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| 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 |