Submission #506391

#TimeUsernameProblemLanguageResultExecution timeMemory
506391RambaXGorillaKangaroo (CEOI16_kangaroo)C++17
100 / 100
30 ms16212 KiB
#include<cstdio> #include<cstring> using namespace std; typedef long long ll; const int modNum = 1000000007; int N, S, F; int dp[2010][2010]; int recur(int num, int comps){ if(!comps){ return 0; } if(num == 1){ return comps == 1 ? 1 : 0; } if(dp[num][comps] + 1){ return dp[num][comps]; } if(num == S || num == F){ dp[num][comps] = (recur(num - 1, comps - 1) + recur(num - 1, comps)) % modNum; } else{ dp[num][comps] = ((ll) recur(num - 1, comps - 1) * (comps - (num > S) - (num > F)) + (ll) recur(num - 1, comps + 1) * comps) % modNum; } return dp[num][comps]; } int main(){ scanf("%d%d%d",&N,&S,&F); memset(dp, -1, sizeof(dp)); printf("%d",recur(N, 1)); }

Compilation message (stderr)

kangaroo.cpp: In function 'int main()':
kangaroo.cpp:27:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |     scanf("%d%d%d",&N,&S,&F);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...