fork(2) download
  1. #include <iostream>
  2. #include <set>
  3. #include <memory.h>
  4. #include <stdio.h>
  5.  
  6. #define REP(i,n) for(int i=0;i<n;i++)
  7.  
  8. using namespace std;
  9. int dp[50][50];
  10.  
  11. int main(){
  12. //freopen("input.txt", "r", stdin);
  13. int d;
  14. cin>>d;
  15. while(d--){
  16. int n; cin>>n;
  17. int k; cin>>k;
  18. memset(dp,0,sizeof(dp));
  19. set<int> s;
  20. REP(i,k){
  21. int x; cin>>x; s.insert(x);
  22. }
  23. for( int i=1;i<=2*n;i++){
  24. for( int j=0;j<=i;j++){
  25. if(i==1){
  26. if(j==1)dp[i][j]=1;
  27. else dp[i][j]=0;
  28. }else{
  29. if(s.find(i)!=s.end()){
  30. dp[i][j] = ((j==0)?0:dp[i-1][j-1]);
  31. }else{
  32. dp[i][j] = dp[i-1][j+1] + ((j==0)?0:dp[i-1][j-1]);
  33. }
  34. }
  35. }
  36. }
  37. cout<<dp[2*n][0]<<endl;
  38. }
  39. }
Time limit exceeded #stdin #stdout 5s 4204KB
stdin
Standard input is empty
stdout
Standard output is empty