Найти объем воды, накопленной между массивами - Pascal ABC

Формулировка задачи:

Дан массив из n неотрицательных элементов, найти объем воды, накопленной между ними. Например, a={5,1,0,3,7,2,3}, объем равен 12 Помогите, пожалуйста, заранее спасибо!

Код к задаче: «Найти объем воды, накопленной между массивами - Pascal ABC»

textual
const n=10;
type mas=array[1..n] of integer;
var a:mas;
    i:integer;
    maxst,maxst1:integer;
    vod:integer;
function kolv(x:mas;s1,s2:integer):integer;
var ii,kv:integer;
begin
 kv:=0;
 if s2>s1 then for ii:=s1 to s2-1 do kv:=kv+x[s1]-x[ii]
          else for ii:=s1 downto s2+1 do kv:=kv+x[s1]-x[ii];
 kolv:=kv
end;
begin
 for i:=1 to n do begin a[i]:=random(10);write(a[i],' ') end;
 writeln;
 maxst:=1;vod:=0;i:=2;
 while i<=n do
  begin
   if a[i]>=a[maxst] 
    then
     begin
      vod:=vod+kolv(a,maxst,i);
      maxst:=i
     end;
   inc(i);
  end;
 i:=n-1;maxst1:=n;
 while i>=maxst do
  begin
   if a[i]>=a[maxst1]
    then
     begin
      vod:=vod+kolv(a,maxst1,i);
      maxst1:=i
     end;
    dec(i)
   end; 
 writeln(vod)
end.

5   голосов, оценка 4.200 из 5


СОХРАНИТЬ ССЫЛКУ