Линия монорельса, построенная в столице Байтландии, не пользуется особой популярностью среди пассажиров. Изучив ситуацию, специалисты по транспортным потокам пришли к выводу, что место для постройки было выбрано очень неудачно. Равно как и конфигурация линии. Дело в том, что для популярности у жителей столицы новая линия должна быть кольцевой. А ещё лучше — если это были бы две кольцевые линии в разных районах города. В итоге было решено разобрать монорельсовую дорогу и из прямолинейных участков построить две примерно одинаковые кольцевые линии. Каждая линия представляет собой многоугольник, собранный из прямолинейных участков существующей линии. При этом многоугольник должен иметь ненулевую площадь, каждый участок существующей линии должен быть использован в новых сооружениях ровно один раз, участки должны быть использованы целиком «как есть» (то есть разрезание прямолинейного участка не допускается).
Мэрия хочет, чтобы длины каждой кольцевой линии (то есть периметры многугольников) отличались как можно меньше. Ваша задача — найти эту минимальную разницу или определить, что строительство двух кольцевых линий из существующего набора прямолинейных участков невозможно.
Формат ввода
Первая строка входных данных содержит одно целое число N (6 ≤ N ≤ 40). Вторая строка содержит N целых чисел l1, l2, …, lN (1 ≤ lN ≤ 100) — длины прямолинейных участков.
Формат вывода
Выведите одно целое неотрицательное число — наименьшую возможную разность периметров. Если построить две кольцевые монорельсовые линии нельзя, выведите -1.
Пример 1
Ввод Вывод
6
4 4 5 4 4 4
1
Пример 2
Ввод Вывод
7
3 2 1 1 2 3 2
0
Пример 3
Ввод Вывод
6
1 1 1 1 1 10
-1
4:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
string num{};
cin>>num;
if(int counter=count(begin(num),end(num),'9') ; counter<=1)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
return 0;
}
5:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
string num{};
cin>>num;
if(bool test=all_of(begin(num),end(num),[](char a){return atoi(&a)%2==0;}) ; test==1)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
return 0;
}
Объяснение:
var
s: string;
i, count: integer;
begin
writeln('Vvedite stroky: ');
readln(s);
for i := 1 to length(s) - 2 do
if copy(s, i, 3) = 'abc' then
count := count + 1;
writeln('Kol-vo: ', count);
end.
2.
var
s1, s2: string;
i, len1, len2: integer;
begin
writeln('Vvedite stroky 1: ');
readln(s1);
writeln('Vvedite stroky 2: ');
readln(s2);
len1 := length(s1);
len2 := length(s2);
if len1 > len2 then writeln('1 stroka dlinnee')
else if len1 < len2 then writeln('2 stroka dlinnee')
else writeln('dlini strok ravnie')
end.
3.
var
s1, s2, s3: string;
begin
writeln('Vvedite stroky 1: ');
readln(s1);
writeln('Vvedite stroky 2: ');
readln(s2);
s3 := s1[1] + s1[2] + s2[1] + s2[2];
writeln('Novaja stroka: ', s3);
end.