//у меня прошел все тесты
#include < iostream>
#include < vector>
#include < algorithm>
using namespace std;
int abc(int a)
{
if(a > 0)
return a;
return a *= -1;
}
int main()
{
int n;
cin> > n;
vector< int> d(n+1);
//ввод
for(int i = 1; i< =n; i++)
{
cin> > d[i];
}
vector< int> b(n+1);
b[1] = d[1];
b[2] = abc(d[2] - d[1]);
//дп
for(int i = 3; i< =n; i++)
{
long a = abc( d[i] - d[i-1] );
long z = abc( 3 * ( d[i] - d[i-2] ) );
a = a + b[i-1];
z = z + b[i-2];
b[i] = min(a,z);
// cout< < b[i]< < " "< < i< < endl;
if(i == 3 & & b[i] == z)
{
b[i] -= d[i-2];
}
}
cout< < b[n]< < endl
}
начнём с того,что s трапеции-это 1/2 a*h (1/2 основания на высоту).
теперь,с этими знаниями,переходим в pascal abc.net.
начинаем с названия программы.
program pltrap; (pltrap-это сокращенно площадь трапеции.если хочешь,можешь написать за место этого то,что хочешь ты).
задаем переменные.
var a,b,c: real; (а-это высота,b-это средняя линия,с-сама площадь трапеции. real-тип переменных чисел.real-значит число может быть как целым,так и не целым).
begin - (начало решения).
возьмем наши переменные,которые будем записывать в строку.
readln(a); - высота.
readln(b); - основание.
c: =0.5*a*b - это наша формула для нахождении площади.1/2-это 0,5.в паскале нужно писать в целых числах вместо запятой точку.
writeln(c); - это то,что нам надо найти,то,что высветится,как ответ,в окне вывода.в нашем случае-это площадь.
end. - конец программы (на конце ставим точку).
итак,что у нас получилось:
program pltrap;
var a,b,c: real;
begin
readln(a);
readln(b);
c: =0.5*a*b;
writeln(c)
end.
теперь пишем в окно ввода числа.
первое число-это a (высота),потому что мы ее задали первой в команде readln(a);
потом-b (основание).
и получаем,чему будет равна площадь.например.пишем числа:
10
2
s=1/2*a*c=0,5*10*2=10- это число выдаст паскаль.
не забывай про ;
если будут вопросы-пиши мне.