Submission #54668

#TimeUsernameProblemLanguageResultExecution timeMemory
54668dennisstarTents (JOI18_tents)C++11
100 / 100
773 ms71424 KiB
#include <bits/stdc++.h> #define MOD 1000000007 int H, W; long long Dp[3010][3010]; int main() { scanf("%d%d", &H, &W); long long i, j; for (i=0; i<=H; i++) Dp[i][0]=1; for (i=0; i<=W; i++) Dp[0][i]=1; for (i=1; i<=H; i++) Dp[i][1]=4*i+i*(i-1)/2+1; for (j=1; j<=W; j++) Dp[1][j]=4*j+j*(j-1)/2+1; for (i=2; i<=H; i++) { for(j=2; j<=W; j++) { Dp[i][j]=Dp[i-1][j-1]*5%MOD; Dp[i][j]%=MOD; Dp[i][j]+=Dp[i-1][j-2]*(j-1)*5+Dp[i-2][j-1]*(i-1)*5%MOD; Dp[i][j]%=MOD; Dp[i][j]+=Dp[i-2][j-2]*(j-1)*(i-1)*2%MOD; Dp[i][j]%=MOD; if (i>=3) Dp[i][j]+=Dp[i-3][j-1]*(i-1)*(i-2)/2%MOD; Dp[i][j]%=MOD; if (j>=3) Dp[i][j]+=Dp[i-1][j-3]*(j-1)*(j-2)/2%MOD; Dp[i][j]%=MOD; Dp[i][j]+=Dp[i-2][j-2]*16*(i-1)*(j-1)%MOD; Dp[i][j]%=MOD; if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*((i-1)*(j-1)*(i-2)*4%MOD)%MOD; Dp[i][j]%=MOD; if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*((j-1)*(i-1)*(j-2)*4%MOD)%MOD; Dp[i][j]%=MOD; if (i>=3&&j>=3) Dp[i][j]+=(Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)%MOD))%MOD; Dp[i][j]%=MOD; if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*((i-1)*(i-2)*(j-1)*2%MOD)%MOD; Dp[i][j]%=MOD; if (i>=4) Dp[i][j]+=Dp[i-4][j-2]*(((i-1)*(i-2)/2*(j-1)*(i-3))%MOD)%MOD; Dp[i][j]%=MOD; if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*((j-1)*(j-2)*(i-1)*2%MOD)%MOD; Dp[i][j]%=MOD; if (j>=4) Dp[i][j]+=Dp[i-2][j-4]*(((j-1)*(j-2)/2*(i-1)*(j-3))%MOD)%MOD; Dp[i][j]%=MOD; if (i>=3&&j>=3) Dp[i][j]+=(Dp[i-3][j-3]*(((i-1)*(j-1)*(i-2)*(j-2)/4)%MOD))%MOD; Dp[i][j]%=MOD; } } printf("%lld", Dp[H][W]-1); return 0; }

Compilation message (stderr)

tents.cpp: In function 'int main()':
tents.cpp:18:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3) Dp[i][j]+=Dp[i-3][j-1]*(i-1)*(i-2)/2%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:18:56: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3) Dp[i][j]+=Dp[i-3][j-1]*(i-1)*(i-2)/2%MOD; Dp[i][j]%=MOD;
                                                        ^~
tents.cpp:19:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=3) Dp[i][j]+=Dp[i-1][j-3]*(j-1)*(j-2)/2%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:19:56: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=3) Dp[i][j]+=Dp[i-1][j-3]*(j-1)*(j-2)/2%MOD; Dp[i][j]%=MOD;
                                                        ^~
tents.cpp:21:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*((i-1)*(j-1)*(i-2)*4%MOD)%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:21:68: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*((i-1)*(j-1)*(i-2)*4%MOD)%MOD; Dp[i][j]%=MOD;
                                                                    ^~
tents.cpp:22:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*((j-1)*(i-1)*(j-2)*4%MOD)%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:22:68: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*((j-1)*(i-1)*(j-2)*4%MOD)%MOD; Dp[i][j]%=MOD;
                                                                    ^~
tents.cpp:23:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3&&j>=3) Dp[i][j]+=(Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)%MOD))%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:23:80: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3&&j>=3) Dp[i][j]+=(Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)%MOD))%MOD; Dp[i][j]%=MOD;
                                                                                ^~
tents.cpp:24:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*((i-1)*(i-2)*(j-1)*2%MOD)%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:24:68: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*((i-1)*(i-2)*(j-1)*2%MOD)%MOD; Dp[i][j]%=MOD;
                                                                    ^~
tents.cpp:25:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=4) Dp[i][j]+=Dp[i-4][j-2]*(((i-1)*(i-2)/2*(j-1)*(i-3))%MOD)%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:25:76: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=4) Dp[i][j]+=Dp[i-4][j-2]*(((i-1)*(i-2)/2*(j-1)*(i-3))%MOD)%MOD; Dp[i][j]%=MOD;
                                                                            ^~
tents.cpp:26:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*((j-1)*(j-2)*(i-1)*2%MOD)%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:26:68: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*((j-1)*(j-2)*(i-1)*2%MOD)%MOD; Dp[i][j]%=MOD;
                                                                    ^~
tents.cpp:27:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=4) Dp[i][j]+=Dp[i-2][j-4]*(((j-1)*(j-2)/2*(i-1)*(j-3))%MOD)%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:27:76: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=4) Dp[i][j]+=Dp[i-2][j-4]*(((j-1)*(j-2)/2*(i-1)*(j-3))%MOD)%MOD; Dp[i][j]%=MOD;
                                                                            ^~
tents.cpp:28:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3&&j>=3) Dp[i][j]+=(Dp[i-3][j-3]*(((i-1)*(j-1)*(i-2)*(j-2)/4)%MOD))%MOD; Dp[i][j]%=MOD;
    ^~
tents.cpp:28:84: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3&&j>=3) Dp[i][j]+=(Dp[i-3][j-3]*(((i-1)*(j-1)*(i-2)*(j-2)/4)%MOD))%MOD; Dp[i][j]%=MOD;
                                                                                    ^~
tents.cpp:7:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &H, &W);
  ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...