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

求助:哪里错了?

Posted by seafilm at 2008-02-27 23:03:39 on Problem 1083
Program p1083(Input, Output);
Type
  rec = Record
    a, b, count, l, r: Longint;
  End;
  rec1 = Record
    a, b: Longint;
  End;

Var
  i, j, n, m, num, p, q, t1, Min, Max: Longint;
  t: Array[1..1000000] Of rec;
  c: Array[1..300] Of rec1;

Procedure Maketree(p, q, x: Longint);
Var
  mid: Longint;
Begin
  t[x].a := p;
  t[x].b := q;
  t[x].count := 0;
  If q - p > 1 Then Begin
    mid := (p + q) Div 2;
    Inc(num);
    t[x].l := num;
    Maketree(p, mid, t[x].l);
    Inc(num);
    t[x].r := num;
    Maketree(mid, q, t[x].r);
  End;
End;

Procedure Fill(p, q, x: Longint);
Begin
  If (p >= t[x].b) Or (q <= t[x].a) Then Exit;
  If (p <= t[x].a) And (q >= t[x].b) And (t[x].a + 1 = t[x].b) Then 

Begin
    Inc(t[x].count);
    If t[x].count > Max Then Max := t[x].count;
    Exit;
  End;
  Fill(p, q, t[x].l);
  Fill(p, q, t[x].r);
End;

Begin
  Readln(n);
  For i := 1 To n Do Begin
    Readln(m);

    Max := -1;
    Min := Maxint;
    For j := 1 To m Do Begin
      Readln(p, q);
      If p > q Then Begin
        t1 := p;
        p := q;
        q := t1;
      End;
      c[j].a := p;
      c[j].b := q;
      If Min > p Then Min := p;
      If Max < q Then Max := q;
    End;
    num := 1;
    Maketree(Min, Max, 1);

    Max := -1;
    For j := 1 To m Do Fill(c[j].a, c[j].b, 1);
    Writeln(Max * 10);
  End;
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