Submission #25106727
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod=1e9+7;
void solve(){
}
int main(){
int n,K;
cin>>n>>K;
ll a[n];
for(int i=0;i<n;i++)
cin>>a[i];
// dp[i][j] represents the total number of ways to
//distribute j candies among first i ppl;
ll dp[101][100001];
memset(dp,0,sizeof(dp));
for(int i=0;i<100001;i++){
dp[0][i]=(i<=a[0])?1:0;
if(i==0)
dp[i][0]=1;
if(i!=0){
dp[0][i]+=dp[0][i-1];
}
}
for(int i=1;i<n;i++){
for(int k=0;k<100001;k++){
ll first=dp[i-1][k];
ll second=((k-a[i]-1<0)?0:dp[i-1][k-a[i]-1]);
// cout<<i<<" "<<k<<" "<<first<<" "<<second<<" "<<first-second<<endl;
//cout<<i<<" "<<k<<" "<<dp[i-1][k]<<" "<<((k-a[i]-1<0)?0:dp[i-1][k-a[i]-1])<<" "<<(dp[i-1][k]- (k-a[i]-1<0)?0:dp[i-1][k-a[i]-1])<<endl;
dp[i][k]=(first-second+2*mod)%mod;
dp[i][k]+=((k-1<0)?0:dp[i][k-1]);
dp[i][k]%=mod;
}
}
cout<<(dp[n-1][K]-(K-1>=0?dp[n-1][K-1]:0)+2*mod)%mod;
}
Submission Info
| Submission Time | |
|---|---|
| Task | M - Candies |
| User | noobita_ |
| Language | C++ (GCC 9.2.1) |
| Score | 100 |
| Code Size | 1093 Byte |
| Status | AC |
| Exec Time | 215 ms |
| Memory | 82496 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| 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 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 0_00 | AC | 60 ms | 82424 KiB |
| 0_01 | AC | 55 ms | 82424 KiB |
| 0_02 | AC | 57 ms | 82316 KiB |
| 0_03 | AC | 60 ms | 82492 KiB |
| 1_00 | AC | 57 ms | 82496 KiB |
| 1_01 | AC | 57 ms | 82496 KiB |
| 1_02 | AC | 215 ms | 82392 KiB |
| 1_03 | AC | 214 ms | 82424 KiB |
| 1_04 | AC | 212 ms | 82492 KiB |
| 1_05 | AC | 213 ms | 82396 KiB |
| 1_06 | AC | 213 ms | 82316 KiB |
| 1_07 | AC | 210 ms | 82316 KiB |
| 1_08 | AC | 213 ms | 82456 KiB |
| 1_09 | AC | 211 ms | 82440 KiB |
| 1_10 | AC | 215 ms | 82452 KiB |
| 1_11 | AC | 212 ms | 82416 KiB |