标签:
题解:难以想象这样的题目居然是usaco金组的= =,汗。。
其实直接排序就好啦,但是这样子太没意思了,于是来个简单的小优化(程序如下,很清晰,相信你们一定看得懂)
1 /************************************************************** 2 Problem: 1753 3 User: HansBug 4 Language: Pascal 5 Result: Accepted 6 Time:12 ms 7 Memory:616 kb 8 ****************************************************************/ 9 10 var 11 i,j,k,l,m,n,x,y:longint; 12 a:array[0..100000] of longint; 13 procedure sort(l,r:longint); 14 var i,j,x,y:longint; 15 begin 16 if (l>m) or (r<m) then exit; //here!!!^_^ 17 i:=l;j:=r;x:=a[(l+r) div 2]; 18 repeat 19 while a[i]<x do inc(i); 20 while a[j]>x do dec(j); 21 if i<=j then 22 begin 23 y:=a[i];a[i]:=a[j];a[j]:=y; 24 inc(i);dec(j); 25 end; 26 until i>j; 27 if i<r then sort(i,r); 28 if l<j then sort(l,j); 29 end; 30 31 begin 32 readln(n);m:=(1+n) div 2; 33 for i:=1 to n do readln(a[i]); 34 sort(1,n); 35 writeln(a[m]); 36 readln; 37 end.
1753: [Usaco2005 qua]Who's in the Middle
标签:
原文地址:http://www.cnblogs.com/HansBug/p/4428134.html