Найти объем воды, накопленной между массивами - Pascal ABC
Формулировка задачи:
Дан массив из n неотрицательных элементов, найти объем воды, накопленной между ними.
Например, a={5,1,0,3,7,2,3}, объем равен 12
Помогите, пожалуйста, заранее спасибо!
Код к задаче: «Найти объем воды, накопленной между массивами - Pascal ABC»
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
СОХРАНИТЬ ССЫЛКУ