【描述】
数轴上有N个点,任意两点连线得到n(n-1)条线段,试求线段的总长。
【输入格式】
第一行,一个整数N,表示点数。
接下来N行,每行一个整数X_i,表示点的坐标。
【输出格式】
一个整数,表示线段的总长。
【样例输入】
5
1
5
3
2
4
【样例输出】
40
【题解】
枚举法;
求出每一条线段的距离,再求和。
var n,i:longint; ans:qword; a:array[1..10000] of qword; procedure qsort(s,t:longint); var i,j,x,temp:longint; begin i:=s; j:=t; x:=a[(i+j) div 2]; repeat while a[i]<x do inc(i); while a[j]>x do dec(j); if i<=j then begin temp:=a[i]; a[i]:=a[j]; a[j]:=temp; inc(i); dec(j); end; until i>j; if s<j then qsort(s,j); if i<t then qsort(i,t); end; begin readln(n); for i:=1 to n do readln(a[i]); qsort(1,n); for i:=1 to n-1 do ans:=ans+(n-i)*i*(a[i+1]-a[i]); writeln(ans*2); end.VijosNT Mini 2.0.5.6
Free Pascal Compiler version 2.6.0 [2011/12/25] for i386
Copyright (c) 1993-2011 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling foo.pas
foo.pas(31,15) Warning: Variable "ans" does not seem to be initialized
Linking foo.exe
33 lines compiled, 0.1 sec , 29872 bytes code, 1628 bytes data
1 warning(s) issued
#01: Accepted (0ms, 660KB)
#02: Accepted (0ms, 660KB)
#03: Accepted (0ms, 660KB)
#04: Accepted (0ms, 660KB)
#05: Accepted (0ms, 660KB)
#06: Accepted (0ms, 660KB)
#07: Accepted (0ms, 660KB)
#08: Accepted (0ms, 660KB)
#09: Accepted (0ms, 660KB)
#10: Accepted (0ms, 660KB)
#11: Accepted (0ms, 660KB)
#12: Accepted (0ms, 660KB)
#13: Accepted (0ms, 660KB)
Accepted / 100 / 0ms / 660KB