Submission #220148

#TimeUsernameProblemLanguageResultExecution timeMemory
220148kshitij_sodaniTents (JOI18_tents)C++17
100 / 100
211 ms70776 KiB
#include <iostream> #include <vector> #include <algorithm> #include <cassert> #include <cstdio> using namespace std; #define pb push_back #define a first #define b second typedef long long int llo; llo mod=1000000007; int main(){ llo n,m; cin>>n>>m; llo dp[n][m]; dp[0][0]=5; for(llo i=1;i<n;i++){ dp[i][0]=4*(i+1)+((i+1)*i)/2; dp[i][0]+=1; dp[i][0]%=mod; } for(llo j=1;j<m;j++){ dp[0][j]=4*(j+1)+((j+1)*j)/2; dp[0][j]+=1; dp[0][j]%=mod; } for(llo i=1;i<n;i++){ for(llo j=1;j<m;j++){ dp[i][j]=4*(j+1)*dp[i-1][j-1]; dp[i][j]+=dp[i-1][j]; if(i>1){ dp[i][j]+=dp[i-2][j-1]*(((j+1)*(i))%mod); } else{ dp[i][j]+=(((j+1)*i)%mod); } if(j>1){ dp[i][j]+=((((j+1)*j)/2)%mod)*dp[i-1][j-2]; } else{ dp[i][j]+=((j+1)*j)/2; } dp[i][j]%=mod; } } /*for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cout<<dp[i][j]<<" "; } cout<<endl; }*/ cout<<(dp[n-1][m-1]+mod-1)%mod<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...