QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 512 MB مجموع النقاط: 100 قابلة للهجوم ✓

#23634. Räkna triangelintervall

الإحصائيات

Du får en array $A=[a_1,a_2,\dots,a_n]$ med längden $n$.

För ett intervall $[x,y]$ ($1\le x\le y\le n$), om man bland indexen $x,x+1,\dots,y$ kan välja tre parvis olika index $i,j,k\ (x\leq i\lt j\lt k\leq y)$ så att deras motsvarande värden kan utgöra längderna på de tre sidorna i en triangel, det vill säga $a_i+a_j\gt a_k, a_i+a_k\gt a_j, a_j+a_k\gt a_i$, så kallas $[x,y]$ ett triangelintervall. I synnerhet är ett intervall med längd mindre än $3$ aldrig ett triangelintervall.

Nu behöver du stödja $q$ operationer, där varje operation är en av följande två typer:

  • Operation av typ 1: $1\ p\ v\ (1\leq p\leq n, 1\leq v\leq 10^{18})$, ändrar $a_p$ till $v$.
  • Operation av typ 2: $2\ l\ r\ (1\leq l\leq r\leq n)$, frågar hur många av alla intervall $[x,y]$ som uppfyller $l\le x\le y\le r$ som är triangelintervall.

Skriv ut motsvarande resultat för varje operation av typ 2.

Indata

Varje test innehåller flera testfall. Den första raden innehåller antalet testfall $T$ ($1\le T\le 10^4$).

För varje testfall:

  • Den första raden innehåller två heltal $n$, $q$ ($1\leq n\leq 10^6,~1\leq q\leq 2\times 10^4$), som anger längden på följden $A$ samt antalet frågor.
  • Den andra raden innehåller $n$ heltal $a_1,a_2,\ldots,a_n$ ($1\le a_i\le 10^{18}$), som anger elementen i den givna följden $A$.
  • De följande $q$ raderna innehåller var och en $3$ heltal som beskriver en operation; indataformatet för de två operationstyperna framgår av problembeskrivningen.

Det garanteras att summan av $n$ över alla testfall inte överstiger $10^6$, att summan av $q$ över alla testfall inte överstiger $2\times 10^4$, samt att varje testfall innehåller minst en operation av typ 2.

Utdata

För varje operation av typ 2, skriv ut antalet triangelintervall inom $[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.