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

Re:实在无语了,怎么也找不出错了.谁找出错了,我请他吃饭(限北京市区)

Posted by carl_ca1 at 2009-03-26 20:03:53 on Problem 2632
In Reply To:实在无语了,怎么也找不出错了.谁找出错了,我请他吃饭(限北京市区) Posted by:abcd0311 at 2009-03-26 18:31:10
> const
>   z: array[0..3] of char=('N','E','S','W');
> var
>   i, j, k, temp: longint;
>   n, m: longint;
>   a: array[-1..110,-1..110] of longint;
>   x,  y: array[-1..110] of longint;
>   b: array[-1..110] of char;
>   lb, lc: longint;
>   cases, t: longint;
>   flag: boolean;
>   ch: char;
>   p: array['A'..'Z'] of longint;
>   
> function work(num, t: longint): boolean;
>   var
>     i, j, k: longint;
>   begin
>     case b[num] of
>       'S': begin
>              k := y[num];
>              while t>0 do begin
>                dec(t);
>                dec(k);
>                if k<=0 then begin
>                  writeln('Robot ',num,' crashes into the wall');
>                  exit(true);
>                end;
>                if a[x[num],k]<>0 then begin
>                  writeln('Robot ',num,' crashes into robot ',a[x[num],k]);
>                  exit(true);
>                end;
>              end;
>              a[x[num],y[num]] := 0;
>              y[num] := k;
>              a[x[num],y[num]] := num;
>            end;
>       'E': begin
>              k := x[num];
>              while t>0 do begin
>                dec(t);
>                inc(k);
>                if k>lb then begin
>                  writeln('Robot ',num,' crashes into the wall');
>                  exit(true);
>                end;
>                if a[k,y[num]]<>0 then begin
>                  writeln('Robot ',num,' crashes into robot ',a[k,y[num]]);
>                  exit(true);
>                end;
>              end;
>              a[x[num],y[num]] := 0;
>              x[num] := k;
>              a[x[num],y[num]] := num;
>            end;
>       'N': begin
>              k := y[num];
>              while t>0 do begin
>                dec(t);
>                inc(k);
>                if k>lc then begin
>                  writeln('Robot ',num,' crashes into the wall');
>                  exit(true);
>                end;
>                if a[x[num],k]<>0 then begin
>                  writeln('Robot ',num,' crashes into robot ',a[x[num],k]);
>                  exit(true);
>                end;
>              end;
>              a[x[num],y[num]] := 0;
>              y[num] := k;
>              a[x[num],y[num]] := num;
>            end;
>       'W': begin
>              k := x[num];
>              while t>0 do begin
>                dec(t);
>                dec(k);
>                if k<=0 then begin
>                  writeln('Robot ',num,' crashes into the wall');
>                  exit(true);
>                end;
>                if a[k,y[num]]<>0 then begin
>                  writeln('Robot ',num,' crashes into robot ',a[k,y[num]]);
>                  exit(true);
>                end;
>              end;
>              a[x[num],y[num]] := 0;
>              x[num] := k;
>              a[x[num],y[num]] := num;
>            end;
>     end;
>     exit(false);
>   end;
>   
>   
> begin
>   assign(input,'d:/1.txt');
>   reset(input);
>   assign(output,'d:/2.txt');
>   rewrite(output);
> 
>   p['N'] := 0;
>   p['E'] := 1;
>   p['S'] := 2;
>   p['W'] := 3;
> 
>   
>   readln(cases);
>   for t := 1 to cases do begin
>     fillchar(a,sizeof(a),0);
>     readln(lb,lc);
>     readln(n, m);
>     for i := 1 to n do begin
>       readln(x[i],y[i],ch,b[i]);
>       a[x[i],y[i]] := i;
>     end;
>     flag := true;
>     for i := 1 to m do begin
>       readln(k,ch,ch,j);
>       case ch of
>         'L': begin
>                j := j mod 4;
>                temp := p[b[k]];
>                temp := (temp+4-j) mod 4;
>                b[k] := z[temp];
>              end;
>         'R': begin
>                j := j mod 4;
>                temp := (temp+j) mod 4;
>                b[k] := z[temp];
>              end;
>          'F': if work(k,j) then begin
>                 flag := false;
>                 break;
>               end;
>       end;
>     end;
>     for j := i+1 to m do readln;
>     if flag then writeln('OK');
>   end;
>   
>   close(input);
>   close(output);
> 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