题意:
程序员排队。假设现在的队列是这样的:MFM
。
从左往右,第一位是男程序员(Male
),第二位是女程序员(Female
),第三位是一位男程序员。
只要一位男程序员发现自己后面是一位女程序员,他就会和这位女程序员交换位置,这样的交换需要消耗一秒。
同一秒内可能会有多位男程序员和自己后面的女程序员交换位置。
问最少要多长时间,队伍不再变动。
思路:
acw题解
const int N = 1e5 + 5; int n, cntM, wait, ans; char s[N]; main() { cin >> s + 1; n = strlen(s + 1); for(int i = 1; i <= n; i++) if(s[i] == 'M') cntM++, wait = max(wait-1, 0); else ans = wait + cntM, wait++; cout << ans; }