记录编号 7974 评测结果 AWWWWTTTTA
题目名称 工作分配 最终得分 20
用户昵称 Gravatarelysian 是否通过 未通过
代码语言 Pascal 运行时间 4.636 s
提交时间 2008-11-12 16:23:49 内存使用 7.74 MiB
显示代码纯文本
program elysian;
const
fin='divide.in';fout='divide.out';
var
f1,f2:text;
n,k,c,m:longint;
a,f:array[0..1000000] of longint;

procedure init;
var
i:longint;
begin
assign(f1,fin);reset(f1);
readln(f1,n,k,c);
for i:=1 to n do
read(f1,a[i]);
close(f1);
end;

procedure qsort(l,r: longint);
      var
         i,j,x,y: longint;
      begin
         i:=l;
         j:=r;
         x:=a[(l+r) div 2];
         repeat
           while a[i]<x do
            inc(i);
           while x<a[j] do
            dec(j);
           if not(i>j) then
             begin
                y:=a[i];
                a[i]:=a[j];
                a[j]:=y;
                inc(i);
                j:=j-1;
             end;
         until i>j;
         if l<j then
           qsort(l,j);
         if i<r then
           qsort(i,r);
      end;

procedure main;
var
i,j:longint;
begin
if k=1 then f[k]:=c
else f[k]:=c+(a[k]-a[1])*(a[k]-a[1]);
for i:=k+1 to n do
begin
f[i]:=c+(a[i]-a[1])*(a[i]-a[1]);
for j:=i-k downto k do
if f[j]+c+(a[i]-a[j+1])*(a[i]-a[j+1])<f[i] then f[i]:=f[j]+c+(a[i]-a[j])*(a[i]-a[j+1]);
end;
assign(f2,fout);rewrite(f2);
writeln(f2,f[n]);
end;

begin
init;
qsort(1,n);
main;
close(f2);
end.