問題
http://community.topcoder.com/stat?c=problem_statement&pm=12300&rd=15699
解き方
最初はすべてのターンでジャンプし、そのときbadStepに当たらなければ
それが最大の答えとなる。
badStepにあたった時、最初の1ステップだけ待てばbadStepに当たらなくなるので
それが答えになる。
コード
class JumpFurther {
public: int furthest(int N, int badStep) {
int valid=1;
int cur=0;
for(int i=1;i<=N;i++){
cur+=i;
if(cur==badStep)valid=0;
}
if(valid)return cur;
cur=0;
for(int i=2;i<=N;i++){
cur+=i;
}
return cur;
}
};
public: int furthest(int N, int badStep) {
int valid=1;
int cur=0;
for(int i=1;i<=N;i++){
cur+=i;
if(cur==badStep)valid=0;
}
if(valid)return cur;
cur=0;
for(int i=2;i<=N;i++){
cur+=i;
}
return cur;
}
};