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 |
大牛们,要出人命了var count,i,n:longint; cha:char;ch:string; a:array[1..100001] of longint; b:array['0'..'Z']of integer; procedure qsort(l,r: longint); var i,j,x,y: longint; begin i:=l; j:=r; x:=a[(l+r) div 2]; repeat while a[i]<x do inc(i); while x<a[j] do dec(j); if not(i>j) then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; inc(i); j:=j-1; end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r); end; procedure print(a,count:longint); var c,j:longint; cc:string; begin c:=a div 10000; str(c,cc); for j:=1 to 3-ord(cc[0]) do write('0');write(cc);write('-'); c:=a mod 10000; str(c,cc); for j:=1 to 4-ord(cc[0]) do write('0');writeln(cc,' ',count); end; function change(ch:string):longint; var jin,t,j:longint; begin jin:=1000000; t:=0; for j:=1 to ord(ch[0]) do if ch[j]<>'-' then begin if (ch[j]>='a') and (ch[j]<='z') then ch[j]:=char(ord(ch[j])-32); t:=b[ch[j]]*jin+t; jin:=jin div 10; end; change:=t; end; begin for cha:='0' to '9' do begin b[cha]:=count;inc(count);end; count:=0; for cha:='A' to 'Y' do if cha<>'Q' then begin b[cha]:=(count div 3)+2; inc(count); end; readln(n); for i:=1 to n do begin readln(ch); a[i]:=change(ch); end; qsort(1,n); count:=1; for i:=2 to n+1 do if a[i]=a[i-1] then inc(count) else if count>1 then begin print(a[i-1],count); count:=1; end; end. 能想到的数据我都试了,还是wa 不是超时,而是wa 怎么回事呢?我自己尝试了三十几个数据,都过了啊!有用pascal大高手讲解一下,感激不尽! 或者谁能提供几组冷偏的数据吗?谢谢 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator