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
AC × 16
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