begin
var n := ReadInteger;
var L := new List<(integer, integer)>;
loop n do
begin
L.Add(ReadInteger2)
end;
var k := L.Count;
L := L.Distinct.ToList; // этап 1
var k1 := L.Count;
Print(k - k1);
(k, k1) := (k1, 0); // этап 2
var St := new Stack<integer>;
var m := L.First[0]; // время
for var i := 1 to k - 1 do
if L[i][0] <= m then
begin
St.Push(i);
Inc(k1)
end
else m := L[i][0];
for var i := 1 to k1 do
L.RemoveAt(St.Pop);
Print(k1);
(k, k1) := (L.Count, 0); // этап 3
m := L.First[1]; // температура
for var i := 1 to k - 1 do
if Abs(L[i][1] - m) > 10 then
begin
St.Push(i);
Inc(k1)
end
else m := L[i][1];
for var i := 1 to k1 do
L.RemoveAt(St.Pop);
Println(k1);
end.
Пример610 58 58 58 512 2513 102 1 1
пусть a – числитель; b – знаменатель; da и db – шаг для числителя и знаменателя; n - для смены знака;
Программа:
const
da= -18; {927-945}
db= 24; {33-9}
var a,b,n: integer;
s: real;
begin
s:=0; n:=1; a:=945;b:=9;
while a>=27 do
begin
s:=s+a/b*n; {подсчет суммы}
a:=a+da;
b:=b+db;
n:= -1*n; {изменение знака}
end;
writeln('s=',s:4:2);
end.