beads.pas

来自「Magio牛的usaco源代码」· PAS 代码 · 共 57 行

PAS
57
字号
{
ID:maigoak1
PROG:beads
}

program beads;
const
  maxlen=350;
var
  fin,fout:text;
  necklace:array[1..maxlen*2]of char;
  len,i,j,get,max,posb,posr:integer;
function fit(a,b:char):boolean;
  begin
    if (a='r') and (b='b') or (a='b') and (b='r') then fit:=false else fit:=true;
  end;
begin
  assign(fin,'beads.in');
  reset(fin);
  readln(fin,len);
  for i:=1 to len do begin
    read(fin,necklace[i]);
    necklace[len+i]:=necklace[i];
  end;
  close(fin);

  max:=0;
  for i:=1 to len do begin
    posb:=0;posr:=0;
    for j:=1 to len do begin
      if necklace[i+j-1]='b' then if j>posb then posb:=j;
      if necklace[i+j-1]='r' then if j>posr then posr:=j;
      if (posb>0) and (posr>0) then break;
    end;
    if posb=0 then posb:=len+1;
    if posr=0 then posr:=len+1;
    if posb>posr then get:=posb-1 else get:=posr-1;

    posb:=0;posr:=0;
    for j:=1 to len do begin
      if necklace[i+len-j]='b' then if j>posb then posb:=j;
      if necklace[i+len-j]='r' then if j>posr then posr:=j;
      if (posb>0) and (posr>0) then break;
    end;
    if posb=0 then posb:=len+1;
    if posr=0 then posr:=len+1;
    if posb>posr then get:=get+posb-1 else get:=get+posr-1;

    if get>len then get:=len;
    if get>max then max:=get;
  end;
  assign(fout,'beads.out');
  rewrite(fout);
  writeln(fout,max);
  close(fout);
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?