Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
顶~In Reply To:怎么做?我排序+构造TLE了 Posted by:realmajia at 2005-07-26 19:49:08 > type > u=record > k,a:longint; > end; > var > s:array[0..50000] of u; > t:array[0..50000,0..3] of longint; > o,o2:array[0..50000] of longint; > i,k,n:longint; > procedure sort(l,r:longint); > var > i,j,w:longint; > x,y:u; > begin > i:=l; > j:=r; > x:=s[(l+r) div 2]; > repeat > while s[i].a<x.a do i:=i+1; > while x.a<s[j].a do j:=j-1; > if i<=j then > begin > y:=s[i]; > s[i]:=s[j]; > s[j]:=y; > w:=o[i]; > o[i]:=o[j]; > o[j]:=w; > i:=i+1; > j:=j-1; > end; > until i>j; > if l<j then sort(l,j); > if i<r then sort(i,r); > end; > begin > readln(n); > for i:=1 to n do > begin > readln(s[i].k,s[i].a); > o[i]:=i; > end; > sort(1,n); > for i:=1 to n do o2[o[i]]:=i; > fillchar(t,sizeof(t),0); > for i:=1 to n do t[i,0]:=s[i].k; > for i:=2 to n do > begin > k:=1; > while true do > begin > if s[i].k<t[k,0] then > begin > if t[k,2]=0 then > begin > t[k,2]:=i; > t[i,1]:=k; > break; > end > else k:=t[k,2]; > end > else > begin > if t[k,3]=0 then > begin > t[k,3]:=i; > t[i,1]:=k; > break; > end > else k:=t[k,3]; > end; > end; > end; > for i:=1 to n do writeln(o[t[o2[i],1]],' ',o[t[o2[i],2]],' ',o[t[o2[i],3]]); > end. Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator