题目描述
华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。直到分差大于或者等于2,才一局结束。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
解析
直接模拟,注意分差要大于等于2
时间复杂度
O(n)
代码
var
f:array [1..1000000] of char;
a,b,x,y,i,j:longint;
ch:char;
begin
repeat
inc(i);
read(f[i]);
until f[i]='E';
for j:=1 to i-1 do
begin
if f[j]='W' then inc(a);
if f[j]='L' then inc(b);
if ((a>=11) or (b>=11)) and (abs(a-b)>=2)
then begin
writeln(a,':',b);
a:=0;
b:=0;
end;
end;
writeln(a,':',b);
writeln;
for j:=1 to i-1 do
begin
if f[j]='W' then inc(x);
if f[j]='L' then inc(y);
if ((x>=21) or (y>=21)) and (abs(x-y)>=2)
then begin
writeln(x,':',y);
x:=0;
y:=0;
end;
end;
writeln(x,':',y);
end.