Submission #73150

#TimeUsernameProblemLanguageResultExecution timeMemory
73150KLPPTents (JOI18_tents)C++14
100 / 100
564 ms282896 KiB
#include<iostream> using namespace std; #define MOD 1000000007 typedef long long int lld; lld DP[6000][6000]; lld trabalha(int x, int y){ if(x<0 || y<0)return 0; if(DP[x][y]!=-1)return DP[x][y]; lld ans=0; ans+=trabalha(x-1,y); ans%=MOD; ans+=4*y*trabalha(x-1,y-1); ans%=MOD; lld comb=y*(y-1); comb/=2; comb%=MOD; //cout<<ans<<endl; ans+=comb*trabalha(x-1,y-2); comb=y*(x-1); comb%=MOD; //cout<<ans<<endl; ans+=comb*trabalha(x-2,y-1); ans%=MOD; DP[x][y]=ans; return ans; } int main(){ for(int i=0;i<6000;i++){ for(int j=0;j<6000;j++){ DP[i][j]=-1; if(i==0 || j==0)DP[i][j]=1; } } int x,y; cin>>x>>y; cout<<(trabalha(x,y)+MOD-1)%MOD<<endl; /*for(int i=0;i<=x;i++){ for(int j=0;j<=y;j++){ cout<<i<<" "<<j<<" "<<DP[i][j]<<endl; } }*/ return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...