Submission #315757

#TimeUsernameProblemLanguageResultExecution timeMemory
315757fadi57Kangaroo (CEOI16_kangaroo)C++14
0 / 100
50 ms94200 KiB
#include <bits/stdc++.h> using namespace std; const int mx=2000; const int mod=1000000007; typedef long long ll; int n,m; int st,en; //(i,x,state); map<int,int>mp; ll dp[mx][mx][3]; ll solve(int i,int x,int dir){ if(i==en){ if(x==n){ return 1;} return 0; } ll &ret=dp[i][x][dir]; if(ret!=-1){return ret;} ret=0; if(dir==0){ for(int j=i+1;j<=n;j++){ if(mp[j]){continue;} mp[j]=1; ret=(ret+solve(j,x+1,dir^1))%mod; mp[j]=0; } }else{ for(int j=i-1;j>=1;j--){ if(mp[j]){continue;} mp[j]=1; ret=(ret+solve(j,x+1,dir^1))%mod; mp[j]=0; } }return ret%mod; } int main() { cin>>n>>st>>en; for(int i=0;i<mx;i++){ for(int j=0;j<mx;j++){ dp[i][j][0]=dp[i][j][1]=-1; } } mp[st]=1; cout<<(solve(st,1,0)+solve(st,1,1))%mod; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...