SEGSQRSS  Sum of Squares with Segment Tree
Segment trees are extremely useful. In particular "Lazy Propagation" (i.e. see here, for example) allows one to compute sums over a range in O(lg(n)), and update ranges in O(lg(n)) as well. In this problem you will compute something much harder:
The sum of squares over a range with range updates of 2 types:
1) increment in a range
2) set all numbers the same in a range.
Input
There will be T (T <= 25) test cases in the input file. First line of the input contains two positive integers, N (N <= 100,000) and Q (Q <= 100,000). The next line contains N integers, each at most 1000. Each of the next Q lines starts with a number, which indicates the type of operation:
2 st nd  return the sum of the squares of the numbers with indices in [st, nd] {i.e., from st to nd inclusive} (1 <= st <= nd <= N).
1 st nd x  add "x" to all numbers with indices in [st, nd] (1 <= st <= nd <= N, and 1,000 <= x <= 1,000).
0 st nd x  set all numbers with indices in [st, nd] to "x" (1 <= st <= nd <= N, and 1,000 <= x <= 1,000).
Output
For each test case output the “Case <caseno>:” in the first line and from the second line output the sum of squares for each operation of type 2. Intermediate overflow will not occur with proper use of 64bit signed integer.
Example
Input: 2 4 5 1 2 3 4 2 1 4 0 3 4 1 2 1 4 1 3 4 1 2 1 4 1 1 1 2 1 1 Output: Case 1: 30 7 13 Case 2: 1
hide comments
magicarp:
20180602 23:48:52
The test cases are extremely weak. Do not do this problem. Try this test case on your AC code and check what it gives by hand:


luka_dzimba911:
20180602 16:13:27
DO NOT USE SPOJ TOOLKIT FOR COMPARISON GIVES WRONG ANSWER FOR MOST OF INPUTS 

vicky_1998:
20180330 18:02:29
It may be easy to find bug in your algorithm , but sometimes you need to see the assignment of space to your containers. Got 4 WA because of this.....I won't repeat it again 

coolio_1:
20180301 10:46:51
Wooohooo!!! AC in 1 go! Nice problem because of the two types of queries. 

tanavya:
20180127 18:57:46
Slightly weak cases. When I checked with a brute force, my accepted code fails when any updated value is 0, because my code just ignores it in the lazy propagation when it does a check like if lazy[i]! Too lazy (heh) to fix it though, but just know, cases are weak!! 

sherlock11:
20180117 14:45:22
weak test case!!!!


tu3297:
20171103 21:13:45
IT +LAZY 

shubham:
20170620 15:56:52
AC in one go :) 

lord_poseidon:
20170604 15:32:58
ac in one go 

mddaud001:
20170521 21:35:25
AC: SEGMENT TREE + LAZY PROPOGATION

Added by:  Chen Xiaohong 
Date:  20120711 
Time limit:  1.106s 
Source limit:  50000B 
Memory limit:  1536MB 
Cluster:  Cube (Intel G860) 
Languages:  All except: ASM64 