⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clocks.pas

📁 Magio牛的usaco源代码
💻 PAS
字号:
{
ID:maigoak1
PROG:clocks
}

program clocks;
const
  move:array[1..9]of integer=(432,448,216,292,186,73,54,7,27);
var
  fin,fout:text;
  clock,c,s:array[1..9]of integer;
  i,j:integer;
  best:string;
procedure turn(m,t:integer);
  var
    x,i:integer;
  begin
    x:=move[m];
    for i:=9 downto 1 do begin
      if odd(x) then begin
        c[i]:=c[i]+3*t;
        if c[i]>12 then c[i]:=c[i]-12;
      end;
      x:=x div 2;
    end;
  end;
procedure search(l:integer);
  var
    i,j,k:integer;
    flag:boolean;
    way:string;
  begin
    for i:=0 to 3 do begin
      s[l]:=i;
      if l<9 then search(l+1) else begin
        c:=clock;
        for j:=1 to 9 do
          turn(j,s[j]);
        flag:=true;
        for j:=1 to 9 do
          if c[j]<12 then begin
            flag:=false;
            break;
          end;
        if flag then begin
          way:='';
          for j:=1 to 9 do
            for k:=1 to s[j] do
              way:=way+chr(48+j);
          if best='no' then
            best:=way
          else if length(way)<length(best) then
            best:=way
          else if (length(way)=length(best)) and (way<best) then
            best:=way;
        end;
      end;
    end;
  end;
begin
  assign(fin,'clocks.in');
  reset(fin);
  for i:=1 to 9 do
    read(fin,clock[i]);
  close(fin);

  best:='no';
  search(1);

  assign(fout,'clocks.out');
  rewrite(fout);
  for i:=1 to length(best)-1 do
    write(fout,copy(best,i,1),' ');
  writeln(fout,copy(best,length(best),1));
  close(fout);
end.

⌨️ 快捷键说明

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