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 |
谁救我?快疯了PROGRAM Lucifer1002; Type themap=record name:string; total:0..100; end; Var Number:integer; map:array[1..100000] of themap; now:word; Procedure Init; begin readln(Number); end; Procedure Solve; var temp:integer; s:string; function Stand(c:char):integer; begin if not (c in ['0'..'9']) then begin if ord(c)<82 then case (ord(c)+1) div 3 of 22:Stand:=2; 23:Stand:=3; 24:Stand:=4; 25:Stand:=5; 26:Stand:=6; 27:Stand:=7; end else case (ord(c) div 3) of 27:Stand:=7; 28:Stand:=8; 29:Stand:=9; end; end else stand:=0; end; function translate(sth:string):string; var tempii:integer; tempss,tempsss:string; begin tempss:=''; for tempii:=1 to length(sth) do begin if sth[tempii]<>'-' then begin if (stand(sth[tempii])<>0) then str(stand(sth[tempii]),tempsss) else tempsss:=sth[tempii]; tempss:=tempss+tempsss; end; end; translate:=tempss; end; procedure check(sth:string); var tempi:integer; find:boolean; begin find:=false; for tempi:=1 to now Do begin if map[tempi].name=translate(sth) then begin inc(map[tempi].total); find:=true; end; end; if find=false then begin inc(now); map[now].name:=translate(sth); map[now].total:=1; end; end; begin now:=0; for temp:=1 to number do begin readln(s); check(s); end; end; Procedure Out; var temp,tempi:integer; function smaller(stha1,stha2:string):boolean; var tempiii:integer; begin smaller:=false; tempiii:=1; while (tempiii<8) and (stha1[tempiii]=stha2[tempiii]) do inc(tempiii); if ord(stha1[tempiii])<ord(stha2[tempiii]) then smaller:=true; end; procedure changethem; var temps:string; temptotal:integer; begin temps:=map[tempi].name; temptotal:=map[tempi].total; map[tempi].name:=map[tempi+1].name; map[tempi].total:=map[tempi+1].total; map[tempi+1].name:=temps; map[tempi+1].total:=temptotal; end; begin for temp:=1 to now-1 do begin for tempi:=1 to now-1 do begin if smaller(map[tempi+1].name,map[tempi].name) then ChangeThem; end; end; for temp:=1 to now do if map[temp].total<>1 then begin insert('-',map[temp].name,4); writeln(map[temp].name,' ',map[temp].total); end; end; BEGIN Init; Solve; Out; END. Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator