Codeforces 298B Sail 题解

来源:互联网 发布:手机怎么改淘宝店铺名 编辑:程序博客网 时间:2024/06/11 14:43

题意

一开始你的船在(sx,sy)处,要去(ex.ey),给定t秒内每一秒的风向,每一秒可以选择顺着风的方向走一格或者不动,问能否在t秒内到达目的地,可以的话最早可以在多少秒到

思路

只有当顺着风的方向可以使当前位置到目的地距离减小时才顺风走,否则就不动,如果在中间某一时刻到目的地了就输出当时的秒数,如果到最后都没到就是到不了了

代码

#include <cstdio>#include <iostream>using namespace std;char s[100002];int main(){    int t,sx,sy,ex,ey;    cin>>t>>sx>>sy>>ex>>ey;    cin>>s+1;    for(int i=1;i<=t;i++)    {        if(s[i]=='E'&&sx<ex)            sx++;        else if(s[i]=='S'&&sy>ey)            sy--;        else if(s[i]=='W'&&sx>ex)            sx--;        else if(s[i]=='N'&&sy<ey)            sy++;        if(sx==ex&&sy==ey)        {            cout<<i<<endl;            break;        }    }    if(!(sx==ex&&sy==ey))        cout<<"-1"<<endl;    return 0;}