#include<bits/stdc++.h>
#define N 300005
using namespace std;
struct A{int x,y,id;}a[N];
bool cmpx(A c,A d){return c.y!=d.y?c.y<d.y:c.x<d.x;}
bool cmpy(A c,A d){return c.x!=c.x?c.x<d.x:c.y<d.y;}
int n,s=1e9,t=-1e9,ans=1e9;
string str;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>str;
a[0].x=260000,a[0].y=260000;
for(int i=1;i<=n;i++){
a[i].id=i;
if(str[i-1]=='N') a[i].x=a[i-1].x,a[i].y=a[i-1].y+1;
if(str[i-1]=='S') a[i].x=a[i-1].x,a[i].y=a[i-1].y-1;
if(str[i-1]=='W') a[i].x=a[i-1].x-1,a[i].y=a[i-1].y;
if(str[i-1]=='E') a[i].x=a[i-1].x+1,a[i].y=a[i-1].y;
}
sort(a+1,a+1+n,cmpx);
for(int i=2;i<=n;i++){
if(a[i].y!=a[i-1].y||abs(a[i].id-a[i-1].id)==1) continue;
int ms,mt,len;
string fx;
if(a[i].id<a[i-1].id){//W
ms=a[i].id,mt=a[i-1].id;
len=abs(a[i].x-a[i-1].x);
fx="W";
}
else{//E
ms=a[i-1].id,mt=a[i].id;
len=abs(a[i].x-a[i-1].x);
fx="E";
}
if(len<ans) ans=len,s=ms,t=mt,str=fx;
else if(len==ans&&ms<s) s=ms,t=mt,str=fx;
else if(len==ans&&ms==s&&mt>t) t=mt,str=fx;
}
sort(a+1,a+1+n,cmpy);
for(int i=2;i<=n;i++){
if(a[i].x!=a[i-1].x||abs(a[i].id-a[i-1].id)==1) continue;
int ms,mt,len;
string fx;
if(a[i].id<a[i-1].id){//N
ms=a[i].id,mt=a[i-1].id;
len=abs(a[i].y-a[i-1].y);
fx="N";
}
else{//S
ms=a[i-1].id,mt=a[i].id;
len=abs(a[i].y-a[i-1].y);
fx="S";
}
if(len<ans) ans=len,s=ms,t=mt,str=fx;
else if(len==ans&&ms<s) s=ms,t=mt,str=fx;
else if(len==ans&&ms==s&&mt>t) t=mt,str=fx;
}
cout<<ans<<" "<<s<<" "<<t<<" "<<str<<endl;
}
和题解思路差不多 快变成题解的样子了还是没过,似乎是最短距离或者起点判断错了QAQ求大佬帮忙看看错在哪里(大悲)