Submission #315756

#TimeUsernameProblemLanguageResultExecution timeMemory
315756fadi57Kangaroo (CEOI16_kangaroo)C++14
0 / 100
173 ms190716 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; }

Compilation message (stderr)

kangaroo.cpp: In function 'int main()':
kangaroo.cpp:44:34: warning: iteration 2000 invokes undefined behavior [-Waggressive-loop-optimizations]
   44 |           dp[i][j][0]=dp[i][j][1]=-1;
      |                       ~~~~~~~~~~~^~~
kangaroo.cpp:43:20: note: within this loop
   43 |       for(int j=0;j<=mx;j++){
      |                   ~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...