A. Dreamoon and Stairs : minimum steps to reach : recursion solution.
http://codeforces.com/contest/476/problem/A
#include<bits/stdc++.h> using namespace std; int dp[10001][5055]; int fun(int cu,int n,int m,int st) { if(st%m==0 && cu==n) { // cout<<st<<endl; return st; } if(cu>n || st>n || st>5050 ) return 999999; int &ret=dp[cu][st]; if(ret) return ret; int k1=fun(cu+1,n,m,st+1); int k2=fun(cu+2,n,m,st+1); return ret=min(k1,k2); } int main() { int n,m,i,j,k,l; cin>>n>>m; //if(n>m*2) // cout<<-1<<endl; k=fun(0,n,m,0); if(k==999999) cout<<-1<<endl; else cout<<k<<endl; return 0; }
Comments
Post a Comment