Advertisement
Guest User

Untitled

a guest
May 5th, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.13 KB | None | 0 0
  1. var n,m,k,q:int64;
  2.     f,pred:array[0..100,0..101] of int64;
  3.     a,ans:array[0..101] of int64;
  4.     sum:int64;
  5.     i,j,t:longint;
  6.    
  7. function summa(left,right:int64):int64;
  8. var ans:int64;
  9.     i,num:longint;
  10. begin
  11.  ans:=0;
  12.  for i:= left to right do
  13.   begin
  14.    num:=i-left+1;
  15.    ans:=ans+num*a[i];
  16.   end;
  17.  summa:=ans;
  18. end;  
  19.    
  20.    
  21. begin
  22.  assign(input,'sms.in');
  23.  reset(input);
  24.  assign(output,'sms.out');
  25.  rewrite(output);
  26.  readln(n,k);
  27.  for i:= 1 to n do
  28.   read(a[i]);
  29.  if n<=k then
  30.   begin
  31.    for i:= 1 to n do
  32.     write(1,' ');
  33.    for i:= n+1 to k do
  34.     write('0 ');
  35.     writeln;
  36.     halt;
  37.   end;
  38.  for i:= 1 to 100 do
  39.   for j:= 0 to 100 do
  40.    f[i,j]:=1000000000000000000;
  41.   for i:= 1 to 100 do
  42.    f[0,i]:=0;
  43.  for i:= 1 to n do
  44.   for j:= 1 to k do
  45.    for t:= 0 to i do
  46.    begin
  47.     sum:=f[t,j-1];
  48.     if (i<>t) then sum:=sum+summa(t+1,i);
  49.     if f[i,j]>sum then
  50.      begin
  51.       f[i,j]:=sum;
  52.       pred[i,j]:=t;    
  53.      end;
  54.    end;
  55.   q:=n;
  56.   for i:= k downto 1 do
  57.    begin
  58.     ans[i]:=q-pred[q,i];
  59.     q:=pred[q,i];
  60.    end;
  61.   for i:= 1 to k do
  62.    write(Ans[i],' ');
  63.   writeln;
  64. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement