QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 512 MB Puntuación total: 100 Hackeable ✓

#23634. Підрахунок трикутних відрізків

Estadísticas

Задано масив $A=[a_1,a_2,\dots,a_n]$ довжини $n$.

Для відрізка $[x,y]$ ($1\le x\le y\le n$), якщо серед індексів $x,x+1,\dots,y$ можна вибрати три попарно різні індекси $i,j,k\ (x\leq i\lt j\lt k\leq y)$ так, що відповідні їм значення можуть бути довжинами трьох сторін трикутника, тобто $a_i+a_j\gt a_k, a_i+a_k\gt a_j, a_j+a_k\gt a_i$, то відрізок $[x,y]$ називається трикутним відрізком. Зокрема, відрізок довжини менше $3$ ніколи не є трикутним відрізком.

Потрібно підтримувати $q$ операцій, кожна з яких належить до одного з двох наступних типів:

  • Операція першого типу: $1\ p\ v\ (1\leq p\leq n, 1\leq v\leq 10^{18})$, змінити $a_p$ на $v$.
  • Операція другого типу: $2\ l\ r\ (1\leq l\leq r\leq n)$, дізнатися, скільки серед усіх відрізків $[x,y]$, що задовольняють умову $l\le x\le y\le r$, є трикутними відрізками.

Для кожної операції другого типу виведіть відповідний результат.

Вхідні дані

Кожен тест містить декілька наборів вхідних даних. Перший рядок містить кількість наборів вхідних даних $T$ ($1\le T\le 10^4$).

Для кожного набору вхідних даних:

  • Перший рядок містить два цілі числа $n$, $q$ ($1\leq n\leq 10^6,~1\leq q\leq 2\times 10^4$), що позначають довжину послідовності $A$ та кількість запитів.
  • Другий рядок містить $n$ цілих чисел $a_1,a_2,\ldots,a_n$ ($1\le a_i\le 10^{18}$), що позначають елементи заданої послідовності $A$.
  • Наступні $q$ рядків містять по $3$ цілі числа, що описують одну операцію; формат вхідних даних для обох типів операцій наведено в умові задачі.

Гарантується, що сума $n$ за всіма наборами вхідних даних не перевищує $10^6$, сума $q$ за всіма наборами вхідних даних не перевищує $2\times 10^4$, і в кожному наборі вхідних даних є принаймні одна операція другого типу.

Вихідні дані

Для кожної операції другого типу виведіть кількість трикутних відрізків усередині $[l,r]$.

Examples

Input 1

2
6 5
3 4 5 1 1 100
2 1 3
2 4 6
1 6 1
2 4 6
2 1 6
3 1
1 1 1
2 1 3

Output 1

1
0
1
7
1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.