ARC 098 C - Attention

Problem Statementios

There are N people standing in a row from west to east. Each person is facing east or west. The directions of the people is given as a string S of length N. The i-th person from the west is facing east if SiE, and west if SiW.app

You will appoint one of the N people as the leader, then command the rest of them to face in the direction of the leader. Here, we do not care which direction the leader is facing.this

The people in the row hate to change their directions, so you would like to select the leader so that the number of people who have to change their directions is minimized. Find the minimum number of people who have to change their directions.spa

Constraintsrest

  • 2≤N≤3×105
  • |S|=N
  • Si is E or W.

Inputcode

Input is given from Standard Input in the following format:orm

N S 

Outputblog

Print the minimum number of people who have to change their directions.ci

Sample Input 1string

5 WEEWW 

Sample Output 1

1 

Assume that we appoint the third person from the west as the leader. Then, the first person from the west needs to face east and has to turn around. The other people do not need to change their directions, so the number of people who have to change their directions is 1 in this case. It is not possible to have 0 people who have to change their directions, so the answer is 1.

Sample Input 2

12 WEWEWEEEWWWE 

Sample Output 2

4 

Sample Input 3

8 WWWWWEEE 

Sample Output 3

3

模擬題

#include<cstring>
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<ctime>
#define ll long long
using namespace std;
const int maxn=300005;

int n,qz[maxn],tot,ans=1<<30;
char s[maxn];

int main(){
	scanf("%d",&n),scanf("%s",s+1);
	for(int i=1;i<=n;i++) qz[i]=qz[i-1]+(s[i]=='E');
	tot=qz[n];
	for(int i=1;i<=n;i++) ans=min(ans,(i-1-qz[i-1])+(tot-qz[i]));
	cout<<ans<<endl;
	return 0;
}
相關文章
相關標籤/搜索