Задачі
Троє з Простоквашино
Троє з Простоквашино
\includegraphics{https://static.e-olymp.com/content/e7/e7e89769faab921727e63068b8c3f4224d8bb4d6.jpg}
- \textit{Дядько Федір, Дядько Федір, я навчився будувати дерево відрізків.}
- \textit{Зачека, Шарик, я зайнятий.}
- \textit{Ну Дядько Федір, ну подивись який я код написав:}
\textbf{int} build(\textbf{int} v, \textbf{int} left, \textbf{int} right) \{
\textbf{if (left == right) \{}
\textbf{t\[v\] = a\[left\];}
\textbf{return 0;}
\textbf{\}}
\textbf{int mid = (left+right) / 2;}
\textbf{build(v*2, left, mid);}
\textbf{build(v*2+1, mid+1, right);}
\textbf{t\[v\] = max(t\[v*2\], t\[v*2+1\]);}
\textbf{return 0;}
\textbf{\}}
\textbf{int get_max(int v, int left, int right, int lpos, int rpos) \{}
\textbf{if (left == lpos && right == rpos)}
\textbf{return t\[v\];}
\textbf{if (lpos > rpos)}
\textbf{return -1;}
\textbf{int mid = (left+right) / 2;}
\textbf{return max(get_max(v*2, left, mid, lpos, min(rpos, mid)),}
\textbf{get_max(v*2+1,mid+1,right,max(lpos,mid+1),rpos));}
\textbf{\}}
- \textit{Ну добре, Шарик, раз ти так добре разібрався з цією темою, давай я тобі дам масив з }\textbf{N}\textit{ невід'ємних чисел і число} \textbf{k}, \textit{а ти мені скажеш скільки існує таких пар} \textbf{l}; \textbf{r} (\textbf{1} ≤ \textbf{l} ≤ \textbf{r} ≤ \textbf{N}), \textit{що функція, викликана наступним чином}
\textbf{get_max(1, 1, N, l, r)}
\textit{поверне значення рівне} \textbf{k}. \textit{Можна вважати, що перед цим було викликано функцію}
\textbf{build(1, 1, N)}
- \textit{Добре, Дядько Федір!}
\InputFile
У першому рядку знаходяться число \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{10^6}) -- кількість елементів у масиві, та \textbf{k} (\textbf{1} ≤ \textbf{k} ≤ \textbf{10^9}) -- значення, яке повинна повернути функція. У наступному рядку знаходиться \textbf{N} невід'ємних чисел, які не перевищують \textbf{10^9} -- елементи масиву.
\OutputFile
Виведіть єдине число -- відповідь до задачі.
Вхідні дані #1
5 3 1 2 3 2 3
Вихідні дані #1
11