记录编号 48705 评测结果 AAAAAAAAAAAW
题目名称 H 指数因子 最终得分 91
用户昵称 GravatarDMC_DY 是否通过 未通过
代码语言 Pascal 运行时间 0.003 s
提交时间 2012-11-06 14:17:35 内存使用 0.20 MiB
显示代码纯文本
  1. type per=record
  2. nam:string;
  3. book,bt,h:longint;
  4. end;
  5. var a:Array[0..100]of per; p,pre,b:array[1..100]of longint; n,i,j,k,pt,dd,l:longint; v:array[1..100]of boolean;
  6. s,ss:ansistring; d:array[1..2000]of longint; //c:array[1..100,1..100]of longint;
  7. function find(x,y:longint):boolean;
  8. var i,j,k:longint;
  9. begin
  10. i:=a[x].bt; j:=0; k:=0;
  11. while i<>0 do
  12. begin
  13. if b[p[i]]>y then inc(j) else if b[p[i]]=y then inc(k);
  14. i:=pre[i];
  15. end;
  16. if(j<=y)and(j+k>=y)then exit(true); exit(false);
  17. end;
  18. procedure qsort(x,y:longint);
  19. var i,j,m:longint; sc:string;
  20. begin
  21. i:=x; j:=y; m:=a[(x+y)>>1].h;
  22. while i<j do
  23. begin
  24. while a[i].h>m do inc(i);
  25. while a[j].h<m do dec(j);
  26. if i<=j then
  27. begin
  28. if a[i].h<>a[j].h then
  29. begin
  30. a[i].h:=a[i].h xor a[j].h; a[j].h:=a[i].h xor a[j].h; a[i].h:=a[i].h xor a[j].h;
  31. sc:=a[i].nam; a[i].nam:=a[j].nam; a[j].nam:=sc;
  32. end else
  33. if(a[i].h=a[j].h)and(a[i].nam>a[j].nam)then
  34. begin sc:=a[i].nam; a[i].nam:=a[j].nam; a[j].nam:=sc; end;
  35. inc(i); dec(j);
  36. end;
  37. end;
  38. if x<j then qsort(x,j); if y>i then qsort(i,y);
  39. end;
  40. procedure init;
  41. begin
  42. readln(n); s:=' '; pt:=0; dd:=0;
  43. for i:=1 to n do
  44. begin
  45. readln(ss); j:=pos(ss,s);
  46. if(j<>0)and(s[j-1]=' ')and(s[j+length(ss)]=' ')then
  47. begin
  48. inc(a[d[j]].book); inc(pt); p[pt]:=i; pre[pt]:=a[d[j]].bt; a[d[j]].bt:=i;
  49. end
  50. else begin
  51. s:=s+ss+' '; inc(dd); d[pos(ss,s)]:=dd; inc(pt); j:=dd; inc(a[dd].book);
  52. p[pt]:=i; pre[pt]:=a[dd].bt; a[dd].bt:=i; a[dd].nam:=ss;
  53. end;
  54. end;
  55. end;
  56. begin
  57. assign(input,'publish.in'); assign(output,'publish.out'); reset(input); rewrite(output);
  58. init;
  59. for i:=1 to n do
  60. begin
  61. readln(ss);
  62. for j:=1 to n do if ss[j]='1' then inc(b[j]);
  63. end;
  64. for i:=1 to dd do
  65. begin
  66. for j:=0 to a[i].book do if find(i,j) then
  67. a[i].h:=j;
  68. end;
  69. k:=0; a[0].h:=-31354; a[0].nam:='zzzzzzz';
  70. for i:=1 to dd do begin k:=0;
  71. for j:=1 to dd do if not(v[j]) then
  72. if a[j].h>a[k].h then k:=j else if(a[j].h=a[k].h)and(a[j].nam<a[k].nam)then k:=j;
  73. writeln(a[k].nam,' ',a[k].h); v[k]:=true;
  74. end;
  75. close(input); close(output);
  76. end.
  77.  
  78.