记录编号 119827 评测结果 AAAAAAAAAA
题目名称 三元数对 最终得分 100
用户昵称 Gravatar稠翼 是否通过 通过
代码语言 Pascal 运行时间 0.102 s
提交时间 2014-09-14 15:22:49 内存使用 2.46 MiB
显示代码纯文本
  1. program cogs1260;
  2. var
  3. a,b,c:array[0..50000,0..1]of int64;
  4. l,r,j,i,k,n:longint;
  5. ans:int64;
  6. procedure init;
  7. begin
  8. assign(input,'three.in');reset(input);
  9. assign(output,'three.out');rewrite(output);
  10. end;
  11. procedure sort(l,r:longint);
  12. var
  13. mid:longint;
  14. begin
  15. if l>=r then exit;
  16. mid:=(l+r)shr 1;
  17. sort(l,mid);
  18. sort(mid+1,r);
  19. k:=l;i:=l;j:=mid+1;
  20. while k<=r do
  21. begin
  22. if(a[i,0]<a[j,0])and(i<=mid)and(j<=r) then
  23. begin
  24. b[k,0]:=a[i,0];
  25. b[k,1]:=a[i,1];
  26. inc(c[a[i,1],1],r-j+1);
  27. inc(k);
  28. inc(i);
  29. end
  30. else if (a[i,0]>=a[j,0])and(i<=mid)and(j<=r) then
  31. begin
  32. b[k,0]:=a[j,0];
  33. b[k,1]:=a[j,1];
  34. inc(c[a[j,1],0],i-l);
  35. inc(k);
  36. inc(j);
  37. end else
  38. if i>mid then
  39. begin
  40. b[k,0]:=a[j,0];
  41. b[k,1]:=a[j,1];
  42. inc(c[a[j,1],0],i-l);
  43. inc(k);
  44. inc(j);
  45. end else
  46. if j>r then
  47. begin
  48. b[k,0]:=a[i,0];
  49. b[k,1]:=a[i,1];
  50. inc(k);
  51. inc(i);
  52. end;
  53. end;
  54. for i:=l to r do
  55. begin
  56. a[i,0]:=b[i,0];
  57. a[i,1]:=b[i,1];
  58. end;
  59. end;
  60. procedure main;
  61. begin
  62. readln(n);
  63. for i:=0 to n-1 do
  64. begin
  65. readln(a[i,0]);
  66. a[i,1]:=i+1;
  67. end;
  68. sort(0,n-1);
  69. for i:=0 to n-1 do inc(ans,c[i,0]*c[i,1]);
  70. writeln(ans);
  71. end;
  72. begin
  73. init;
  74. main;
  75. close(output);
  76. end.//complete by chouyi20140913