Var a:array[1..30] of integer; i, max, max2:integer; begin for i:= 1 to 30 do read(a[i]); max:=a[1] - 2*a[1];max2:=max; for i:= 1 to 30 do begin if a[i] > max then begin max2:= max; max:=a[i]; continue; end; if a[i] > max2 then max2:=a[i]; end; Writeln(max2, ' ', max); end.
Если лень перебирать вручную, можно воспользоваться программой
var k,l,r,x,f:integer; begin f := 3001; l := 0; r := 65534; x := (l + r) div 2; k := 1; while (x <> f) and (l < r) do begin writeln(k,' ',l,' ',r,' ',x); k := k + 1; if f < x then r := x - 1 else l := x + 1; x := (l + r) div 2 end; writeln(k,' ',l,' ',r,' ',x); end.
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016 begin var n:=ReadInteger('n='); var a:=ArrRandom(n,-50,50); Writeln('Исходный массив'); a.Println; var se:=a.Where(x->x mod 3=0); if se.Count=0 then Writeln('В массиве нет элементов, кратных трем') else begin var b:=se.Max; var i:=0; while a[i]<>b do Inc(i); if i=n-1 then Writeln('Максимальный элемент - последний') else begin Writeln('Результирующий массив'); a[i+1]:=abs(a.Where(x->x<0).Sum); a.Println end end end.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(30,-50,50); a.Println;
a.OrderByDescending(t->t).Take(2).Println
end.
Пример
14 -16 16 45 -42 27 -47 9 -31 -3 -49 7 15 44 -46 -30 7 34 30 25 -20 45 47 -8 -25 26 -16 42 -5 -17
47 45