//PascalABC.Net 3.0, сборка 1064 const n=20; var a:array[1..n] of integer; i,imax,imin:integer; s:longint; begin Randomize; Writeln('Исходный ряд значений'); imax:=1; imin:=1; for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' '); if a[i]>a[imax] then imax:=i else if a[i]<a[imin] then imin:=i end; Writeln; if imax>imin then Writeln('Максимальный элемент встретился позже минимального') else begin s:=0; for i:=imax+1 to imin-1 do s:=s+a[i]; Writeln('Сумма элементов между максимальным и минимальным значением ',s) end end.
Тестовое решение: Исходный ряд значений 10 -3 9 5 20 10 6 2 -19 -19 6 -24 -7 -1 23 11 -8 -16 -14 -25 Сумма элементов между максимальным и минимальным значением -27
Вот код на питоне:
N = int(input())
objects = []
for i in range(N):
objects.append(list(map(int, input().split(
rezult = []
summ = 0
price = 0
while summ <= 40:
Max = 0
index = -1
for i in objects:
if i[1] > Max and i[0] + summ <= 40 and not objects.index(i) in rezult:
Max = i[1]
index = objects.index(i)
if index == -1:
break
rezult.append(index)
summ += objects[index][0]
price += objects[index][1]
for i in rezult:
print(i + 1)
print(summ, price)
Объяснение:
При необходимости могу пояснить построчно.
const
n=20;
var
a:array[1..n] of integer;
i,imax,imin:integer;
s:longint;
begin
Randomize;
Writeln('Исходный ряд значений');
imax:=1; imin:=1;
for i:=1 to n do begin
a[i]:=Random(51)-25; Write(a[i],' ');
if a[i]>a[imax] then imax:=i
else
if a[i]<a[imin] then imin:=i
end;
Writeln;
if imax>imin then
Writeln('Максимальный элемент встретился позже минимального')
else begin
s:=0;
for i:=imax+1 to imin-1 do s:=s+a[i];
Writeln('Сумма элементов между максимальным и минимальным значением ',s)
end
end.
Тестовое решение:
Исходный ряд значений
10 -3 9 5 20 10 6 2 -19 -19 6 -24 -7 -1 23 11 -8 -16 -14 -25
Сумма элементов между максимальным и минимальным значением -27