| 记录编号 | 
        39328 | 
        评测结果 | 
        AAAAAAAAAA | 
    
    
        | 题目名称 | 
        859.数列 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         isabella | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        Pascal | 
        运行时间 | 
        0.043 s  | 
    
    
        | 提交时间 | 
        2012-07-09 12:04:40 | 
        内存使用 | 
        1.12 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		var
 n,i,j,temp:longint;
 ans:int64;
 a,b,num,nn,tot:array[0..50010]of longint;
 procedure guibing(l,r:longint);
 var
   i,j,mid,k:longint;
 begin
   if l=r then exit;
   mid:=(l+r)div 2;
   guibing(l,mid);
   guibing(mid+1,r);
   i:=l;
   j:=mid+1;
   k:=l;
   while(i<=mid)and(j<=r) do
     begin
       if a[i]>=a[j] then
         begin b[k]:=a[i];nn[k]:=num[i];inc(k);inc(i);end
        else begin
         b[k]:=a[j];nn[k]:=num[j];
         inc(nn[k],mid-i+1);
         inc(k);inc(j);
        end;
     end;
   while i<=mid do
    begin b[k]:=a[i];nn[k]:=num[i];inc(k);inc(i);end;
   while j<=r do
    begin b[k]:=a[j];nn[k]:=num[j];inc(k);inc(j);end;
   for i:=l to r do begin a[i]:=b[i];num[i]:=nn[i];end;
 end;
begin
assign(input,'queueb.in');reset(input);
assign(output,'queueb.out');rewrite(output);
 fillchar(num,sizeof(num),0);
 readln(n);
 for i:=1 to n do read(a[i]);
 guibing(1,n);
 i:=n;
 while i>=1 do
  begin
   temp:=n-i;
   j:=i;
   while a[j]=a[i]do begin tot[j]:=temp;dec(j);end;
   i:=j;
  end;
 ans:=0;
 for i:=1 to n do
  begin
   ans:=ans+num[i]*(tot[i]-num[i]);
  end;
 writeln(ans);
 {for i:=1 to n do write(a[i],' ');writeln;
 for i:=1 to n do write(tot[i],' ');writeln;
 for i:=1 to n do write(num[i],' ');writeln; }
close(input);close(output);
end.