Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

不知wa哪里

Posted by yeshuxiong at 2005-06-25 13:42:56 on Problem 1088
const way:array [1..4,1..2] of integer=((1,0),(-1,0),(0,1),(0,-1));
type data=array [1..3] of integer;
var
 n,m,top:integer;
 f:array [1..10000] of data;
 c:array [1..100,1..100] of integer;
 used:array [1..100,1..100] of boolean;
 procedure run(h,t:integer);
 var
  q,w:integer;p:data;
 begin
  if h>=t then exit;
  q:=h;w:=t;
  p:=f[q];
  while q<>w do
   begin
    while (q<>w) and (p[3]>=f[w,3]) do w:=w-1;
    f[q]:=f[w];
    while (q<>w) and (f[q,3]>=p[3]) do q:=q+1;
    f[w]:=f[q];
   end;
  f[q]:=p;
  run(h,q-1);run(q+1,t);
 end;
 procedure main;
 var
  i,j,best,x,y:integer;
 begin
  readln(n,m);top:=n*m;
  for i:=1 to n do
   begin
    for j:=1 to m do
     begin
      top:=(i-1)*m+j;
      read(f[top,3]);
      f[top,1]:=i;f[top,2]:=j;
     end;
    readln;
   end;
  run(1,n*m);
  fillchar(c,sizeof(c),0);
  fillchar(used,sizeof(used),true);
  best:=0;
  for i:=1 to n*m do
   begin
    used[f[i,1],f[i,2]]:=false;
    for j:=1 to 4 do
     begin
      x:=f[i,1]+way[j,1];y:=f[i,2]+way[j,2];
      if (0<x) and (x<n+1) and (0<y) and (y<m+1) and (c[x,y]<c[f[i,1],f[i,2]]+1)and (used[x,y])then
       begin
        c[x,y]:=c[f[i,1],f[i,2]]+1;
        if best<c[f[i,1],f[i,2]]+1 then best:=c[f[i,1],f[i,2]]+1;
       end;
     end;
   end;
  writeln(best+1);
 end;
begin
 main;
end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator