Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) B. Little Artem and Grasshopper 模拟题

B. Little Artem and Grasshopper

题目连接:

http://www.codeforces.com/contest/669/problem/B

Description

Little Artem found a grasshopper. He brought it to his house and constructed a jumping area for him.

The area looks like a strip of cells 1 × n. Each cell contains the direction for the next jump and the length of that jump. Grasshopper starts in the first cell and follows the instructions written on the cells. Grasshopper stops immediately if it jumps out of the strip. Now Artem wants to find out if this will ever happen.

Input

The first line of the input contains a single integer n (1 ≤ n ≤ 100 000) — length of the strip.

Next line contains a string of length n which consists of characters “<” and “>” only, that provide the direction of the jump from the corresponding cell. Next line contains n integers di (1 ≤ di ≤ 109) — the length of the jump from the i-th cell.

Output

Print “INFINITE” (without quotes) if grasshopper will continue his jumps forever. Otherwise print “FINITE” (without quotes).

Sample Input

2

<
1 2

Sample Output

FINITE

Hint

题意

有一个人有一个院子,是1*n这么大的

每个格子里面都写着一个箭头,表示这个人要往哪儿去跳,并且给你这个人跳跃的距离是多少

然后问你这个人会不会一直跳下去……

题解:

其实这个人只要跳到他之前跳到过的位置,他就会一直循环的跳下去了

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+6;
string s;
int vis[maxn],n,now,jump[maxn];
int main()
{
    scanf("%d",&n);
    cin>>s;
    for(int i=0;i<n;i++)
        scanf("%d",&jump[i]);
    while(1)
    {
        if(vis[now])return puts("INFINITE");
        vis[now]=1;
        if(s[now]=='>')now = now + jump[now];
        else now = now - jump[now];
        if(now>=n||now<0)return puts("FINITE");
    }
}
    原文作者:qscqesze
    原文地址: https://www.cnblogs.com/qscqesze/p/5432591.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞