友军寻路法

链接:https://ac.nowcoder.com/acm/contest/2763/C
来源:牛客网

不善使用地图的比速度队一直使用友军寻路算法寻找报道、吃饭和吃饭的地方,简单地说就是,找到一个队伍,然后跟着走。

友军偶尔会因为路口转弯而在可视范围内消失,不过不要紧,只要到达路口后还能看见友军就可以继续跟着走,否则的话就是跟丢了。

现在距离前面L米处有一队友军,比速度队用相同的步行速度跟在后面。

根据上帝视角我们知道(但比速度队并不知道),友军接下来会经历n个路口转弯,并且友军从他们的当前位置步行 li米后会经历第i个路口转弯。

请问比速度队是否会跟丢,如果没有跟丢输出OK,否则输出GG。

输入描述:

多组输入,其中每组:

第1行:两个由空格分开的正整数n, L,分别表示路口数以及两队之间的距离

第2行:n个由空格分开的正整数li,第i个数表示步行li米后会经历第i个路口转弯

2≤n≤1002 \le n \le 1002n100

1≤L≤1001 \le L \le 1001L100

1≤li≤100001 \le l_i \le 100001li10000

数据保证每组的li都是严格递增的

输出描述:

对于每组输入,输出1行:OK或GG
示例1

输入

复制
3 3
3 6 9
3 3
3 6 8
3 3
2 5 8

输出

复制
OK
GG
OK

备注:

在第二组样例中,比速度队通过第二个路口时发现友军已经消失了,GG。

样例一

友军寻路法_第1张图片

样例二

友军寻路法_第2张图片

 

题解:给红队和蓝队之间的距离,问红队在分叉口的时候是否会丢蓝队

如果存在两个分叉口之间的距离大于红队和蓝队的距离,就会跟丢,否则不会。

 

#include 
#define MAX 105
using namespace std;
 
int s[MAX];
int n,l;
bool flag;
 
int main(){
    while(scanf("%d %d",&n,&l)!=EOF){
        flag=true;
        for(int i=0;i){
            scanf("%d",&s[i]);
            if(i>=1){
                if(s[i]-s[i-1] < l) 
                    flag=false;
            }
        }
        if(flag)    printf("OK\n");
        else    printf("GG\n");
    }
    return 0;
}

你可能感兴趣的:(友军寻路法)