QOJ.ac

QOJ

시간 제한: 2 s 메모리 제한: 512 MB 총점: 100 해킹 가능 ✓

#23634. Үшбұрышты кесінділерді санау

통계

Ұзындығы $n$ болатын $A=[a_1,a_2,\dots,a_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)$, $l\le x\le y\le r$ шартын қанағаттандыратын барлық $[x,y]$ кесінділерінің ішінде қаншасы үшбұрышты кесінді екенін сұрайды.

Әрбір екінші түрдегі операция үшін сәйкес нәтижені шығарыңыз.

Енгізу деректері

Әрбір тест бірнеше тест жағдайларынан тұрады. Бірінші жолда тест жағдайларының саны $T$ ($1\le T\le 10^4$) берілген.

Әрбір тест жағдайы үшін:

  • Бірінші жолда $A$ тізбегінің ұзындығын және сұраныстар санын білдіретін екі бүтін сан $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}$) берілген.
  • Келесі $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.