Рассмотрим кусок строки (как в «веревке», а не в «группе символов»), который сложен взад-вперед на реальной линии. Мы можем описать форму строки с помощью списка точек, через которые она проходит (по порядку). Для простоты мы будем предполагать, что все эти точки являются целыми числами.
Возьмите в качестве примера [-1, 3, 1, -2, 5, 2, 3, 4]
(обратите внимание, что не каждая запись подразумевает фолд):
Строка, идущая вдоль вертикального направления, предназначена только для визуализации. Представьте, что все нити сплющены на реальной линии.
Теперь возникает вопрос: какое наибольшее количество кусочков может быть разрезано на эту строку за один разрез (который должен быть вертикальным на рисунке выше). В этом случае ответ 6 с разрезом где-нибудь между 2
и 3
:
Чтобы избежать неясностей, разрез должен быть выполнен в нецелочисленном положении.
Соревнование
Учитывая список целочисленных позиций, через которые складывается строка, вы должны определить наибольшее количество фрагментов, в которые строка может быть разрезана с одним разрезом в нецелочисленной позиции.
Вы можете написать полную программу или функцию. Вы можете получить ввод через STDIN, аргумент командной строки, приглашение или параметр функции. Вы можете записать вывод в STDOUT, отобразить его в диалоговом окне или вернуть из функции.
Вы можете предположить, что список находится в любом удобном формате списка или строки.
Список будет содержать не менее 2 и не более 100 записей. Записи будут целыми числами, каждое в диапазоне -2 31 ≤ p i <2 31 . Вы можете предположить, что никакие две последовательные записи не являются идентичными.
Ваш код должен обработать любой такой ввод (включая тестовые примеры ниже) менее чем за 10 секунд на приемлемом настольном ПК.
Тестовые случаи
Все контрольные примеры просто вводятся, а затем выводятся.
[0, 1]
2
[2147483647, -2147483648]
2
[0, 1, -1]
3
[1, 0, -1]
2
[-1, 3, 1, -2, 5, 2, 3, 4]
6
[-1122432493, -1297520062, 1893305528, 1165360246, -1888929223, 385040723, -80352673, 1372936505, 2115121074, -1856246962, 1501350808, -183583125, 2134014610, 720827868, -1915801069, -829434432, 444418495, -207928085, -764106377, -180766255, 429579526, -1887092002, -1139248992, -1967220622, -541417291, -1617463896, 517511661, -1781260846, -804604982, 834431625, 1800360467, 603678316, 557395424, -763031007, -1336769888, -1871888929, 1594598244, 1789292665, 962604079, -1185224024, 199953143, -1078097556, 1286821852, -1441858782, -1050367058, 956106641, -1792710927, -417329507, 1298074488, -2081642949, -1142130252, 2069006433, -889029611, 2083629927, 1621142867, -1340561463, 676558478, 78265900, -1317128172, 1763225513, 1783160195, 483383997, -1548533202, 2122113423, -1197641704, 319428736, -116274800, -888049925, -798148170, 1768740405, 473572890, -1931167061, -298056529, 1602950715, -412370479, -2044658831, -1165885212, -865307089, -969908936, 203868919, 278855174, -729662598, -1950547957, 679003141, 1423171080, 1870799802, 1978532600, 107162612, -1482878754, -1512232885, 1595639326, 1848766908, -321446009, -1491438272, 1619109855, 351277170, 1034981600, 421097157, 1072577364, -538901064]
53
[-2142140080, -2066313811, -2015945568, -2013211927, -1988504811, -1884073403, -1860777718, -1852780618, -1829202121, -1754543670, -1589422902, -1557970039, -1507704627, -1410033893, -1313864752, -1191655050, -1183729403, -1155076106, -1150685547, -1148162179, -1143013543, -1012615847, -914543424, -898063429, -831941836, -808337369, -807593292, -775755312, -682786953, -679343381, -657346098, -616936747, -545017823, -522339238, -501194053, -473081322, -376141541, -350526016, -344380659, -341195356, -303406389, -285611307, -282860017, -156809093, -127312384, -24161190, -420036, 50190256, 74000721, 84358785, 102958758, 124538981, 131053395, 280688418, 281444103, 303002802, 309255004, 360083648, 400920491, 429956579, 478710051, 500159683, 518335017, 559645553, 560041153, 638459051, 640161676, 643850364, 671996492, 733068514, 743285502, 1027514169, 1142193844, 1145750868, 1187862077, 1219366484, 1347996225, 1357239296, 1384342636, 1387532909, 1408330157, 1490584236, 1496234950, 1515355210, 1567464831, 1790076258, 1829519996, 1889752281, 1903484827, 1904323014, 1912488777, 1939200260, 2061174784, 2074677533, 2080731335, 2111876929, 2115658011, 2118089950, 2127342676, 2145430585]
2
a reasonable desktop PC
довольно двусмысленно?