霧島京子ミッション / paizaOnlineHackathon6

paiza.jp

#include <iostream>
using namespace std;

void Solve(int n)    {
    int t[100+1], m, d;

    for (int i=0; i<n; ++i)
        cin >> t[i];
    cin >> m;
    for (int i=0; i<m; ++i) {
        cin >> d;
        bool flg[100+1] = {false};
        while (d != n-1)  {
            if (d<=0 || n-1<d || flg[d])  break;
            flg[d] = true;
            d += t[d];
        }
        cout << (d==n-1? "Yes" : "No") << endl;
    }
}

int main(void)  {
    int n;

    cin >> n;
    Solve(n);
    return 0;
}

範囲外と既通過を気をつける。ゴールに辿り着けた場合Yes、そうでない場合Noを出力。
〜了〜