Sphere Online Judge

SPOJ Problem Set (classical)

1029. Matrix Summation

Problem code: MATSUM

A N × N matrix is filled with numbers. BuggyD is analyzing the matrix, and he wants the sum of certain submatrices every now and then, so he wants a system where he can get his results from a query. Also, the matrix is dynamic, and the value of any cell can be changed with a command in such a system.

Assume that initially, all the cells of the matrix are filled with 0. Design such a system for BuggyD. Read the input format for further details.

Input

The first line of the input contains an integer t, the number of test cases. t test cases follow.

The first line of each test case contains a single integer N (1 <= N <= 1024), denoting the size of the matrix.

A list of commands follows, which will be in one of the following three formats (quotes are for clarity):

  1. "SET x y num" - Set the value at cell (x, y) to num (0 <= x, y < N).
  2. "SUM x1 y1 x2 y2" - Find and print the sum of the values in the rectangle from (x1, y1) to (x2, y2), inclusive. You may assume that x1 <= x2 and y1 <= y2, and that the result will fit in a signed 32-bit integer.
  3. "END" - Indicates the end of the test case.

Output

For each test case, output one line for the answer to each "SUM" command. Print a blank line after each test case.

Example

Input:
1
4
SET 0 0 1
SUM 0 0 3 3
SET 2 2 12
SUM 2 2 2 2
SUM 2 2 3 3
SUM 0 0 2 2
END

Output:
1
12
12
13
Warning: large Input/Output data, be careful with certain languages

Added by:Matthew Reeder
Date:2006-10-29
Time limit:7s
Source limit:30000B
Languages:All except: ERL TECS JS
Resource:Al-Khawarizm 2006

hide comments
2009-06-13 11:34:40 Hy Trường Sơn
my algorithm is very slow. I use segment tree
2009-04-27 01:51:03 Brian
There is a blank line, but you can't see it because it's at the end. In case it wasn't clear, note that there is actually only one case shown in the sample (so there are no blank lines "between").

Also, I got AC with the assumption that num fits into an int [which is a signed 32-bit integer in C/C++]

Last edit: 2009-04-27 01:53:13
2009-04-26 20:29:05 Omar El-Azazy
"Print a blank line after each test case."
why in sample output there is no blank line after case 1 ?
2009-04-26 20:26:28 Omar El-Azazy
"the result will fit in a signed 32-bit integer." does that make num( number to put at place (x,y) ) never exceed signed 32-bit integer limits ??
SPOJ System © 2008-2010 Sphere Research Labs. All Rights Reserved.