Title: Mobiles
Author: IOI 2001
Last saved by: Kristiyan Haralambiev
Company: University of Tampere

Task Description		DAY-1
IOI 2001                                                                                                     BULGARIA
Tampere, Finland		mobiles

Мобилни телефони

ЗАДАЧА
Да предположим, че базовите станции за мобилни телефони от четвърто поколение, разположени в района на Тампере работят по следния начин: районът е резделен на еднакви квадрати, които образуват матрица с размери S×S, редовете и стълбовете на която са номерирани последователно с числата от 0 до S-1. Всеки квадрат съдържа една базова станция. Броят на активните мобилни телефони в квадрата  се мени от време на време, защото някои телефони се преместват от квадрат в квадрат, други пък се включват или изключват. От време на време всяка базова станция съобщава на главната станция за промяната в броя на активните телефони в нейния квадрат, като съобщава и координатите на квадрата в матрицата.
Напишете програма, която, след като получи данните, изпращани от базовите станции, отговаря на въпроси за броя на активните телефони в някаква правоъгълна част на района.

ВХОД И ИЗХОД
Входните данни трябва да се четат от стандартния вход като цели числа и резултатите трябва да се запишат на стандартния изход, също като цели числа. Входните данни са структурирани по следния начин. Всеки ред на входа съдържа: поне едно цяло число в началото – код на команда, което може да бъде последвано от един или няколко параметъра – също цели числа, както е показано в следната таблица.

Код | Параметри | Значение
0 | S | Инициализира таблица с размери S×S така, че всичките и елементи имат стойност 0. Тази команда се среща само веднъж във входа и непременно е първа.
1 | X Y A | Добавя A към текущия брой активни телефони за квадрата с координати (X, Y). A може да бъде положително или отрицателно.
2 | L B R T | Извежда текущия брой на активните телефони във всички квадрати с координати (X,Y), където L ≤ X ≤ R, B ≤ Y ≤ T
3 | | Завършва изпълнението на програмата. Тази команда се среща само веднъж във входа и непременно е последна.

Стойностите на параметрите винаги са в зададените граници и не е нужно да се проверяват. В частност, ако A е отрицателно, то няма да доведе броя на текущите активни телефони в квадрата до число по-малко от 0. Номерацията започва с 0, т.е. за таблица с размери 4×4, имаме 0 ≤ X ≤ 3 и 0 ≤ Y ≤ 3.
Програмата ви не трябва да извежда нищо когато срещне команда с код, различен от 2. Ако командата е с код 2, тогава програмата трябва да изведе на стандартния изход единствен ред с едно цяло число - отговора на поставения въпрос. 

ИНСТРУКЦИЯ ЗА ПРОГРАМИРАНЕТО
В примера даден по-долу, нека цялото число last е последното, което трябва да бъде прочетено от входния ред, а answer – цяла променлива, съдържаща намерения от програмата ви отговор.
Ако програмирате на C++ с iostreams, използвайте следния фрагмент за да четете от стандартния вход и да пишете на стандартния изход:
cin>>last;
cout<<answer<<endl<<flush; 	
Ако програмирате на C или C++ и със scanf и printf, използвайте следния фрагмент за да четете от стандартния вход и да пишете на стандартния изход:
scanf ("%d", &last);			
printf("%d\n",answer); fflush (stdout);
Ако програмирате на Pascal, използвайте следния фрагмент за да четете от стандартния вход и да пишете на стандартния изход:			
Read(last); ... Readln;
Writeln(answer);
ПРИМЕР
stdin			stdout		Обяснение

0 4  			  	Инициализира с нули таблица 4×4.
1 1 2 3  			  	Обновява клетката (1,2) с +3.
2 0 0 2 2			           	Намира броя за 0 ≤ X ≤ 2, 0 ≤ Y ≤  2. 
			3		Извежда намерения резултат.
1 1 1 2  				Обновява клетката (1, 1) с +2.
1 1 2 -1            			Обновява клетката (1, 2) с -1.
2 1 1 2 3				Намира броя за 1 ≤ X ≤ 2,  1 ≤ Y ≤  3. 
			4		Извежда намерения резултат.
3					Спира програмата.

ОГРАНИЧЕНИЯ
Размер на матрицата | S×S | 1×1 ≤ S×S ≤ 1024×1024
Стойността V в клеткa по всяко време | V | 0 ≤ V ≤ 2^15 –1  (= 32767)
Изменение | A | -2^15 ≤ A ≤ 2^15–1  (= 32767)
Брой команди във входа | U | 3 ≤ U ≤ 60002
Максимален брой телефони в цялата матрица | M | M= 2^30
От 20 тестови примера, в 16 матрицата е с размери не по-големи от 512×512.

Забележка: Web-тестерът ще пренасочи изпратен от вас входен файл към стандартния вход на вашата програма.

01.08.01	Page  of 	mobiles