Mobilieji telefonai

UŽDUOTIS

Tarkime, kad mobiliųjų telefonų stotys Tamperės apylinkėje veikia šitaip. Apylinkė padalinta į kvadratus. Kvadratai sudaro SS dydžio matricą, kurios eilutės ir stulpeliai sunumeruoti nuo 0 iki S-1. Kiekviename kvadrate yra po vieną stotį. Kiekviename kvadrate mobiliųjų telefonų skaičius gali keistis, kadangi telefonai nešiojami iš vieno kvadrato į kitą, išjungiami ir įjungiami. Laikas nuo laiko kiekviena stotis praneša pagrindinei stočiai aktyvių telefonų skaičiaus pokyčius kvadrate, kartu nurodydama ir kvadrato, kuriame įvyko šis pokytis (t. y. kvadrato, kuriame yra pati stotis), koordinates (eilutę ir stulpelį).

Parašykite programą, kuri priimtų pranešimus ir atsakytų į užklausas, kiek iš viso yra aktyvių mobiliųjų telefonų užklausoje nurodytoje stačiakampėje srityje .

PRADINIAI DUOMENYS IR REZULTATAI

Pradiniai duomenys skaitomi iš standartinio įvesties įrenginio (standard input) ir atsakymai į užklausas išvedami į standartinį išvesties įrenginį (standard output). Ir pradiniai duomenys, ir rezultatai yra sveikieji skaičiai. Pradiniai duomenys pateikiami šitaip. Kiekviena įvestis pateikiama atskira eilute, ją sudaro viena komanda (sveikasis skaičius) ir keletas parametrų (sveikųjų skaičių), kurie aprašomi žemiau pateikta lentele.

Komanda	Parametrai	Prasmė	
0	S	Inicializuoja SS dydžio matricą nuliais. Komanda pateikiama tik vieną kartą ir tai yra pirmoji komanda.	
1	X Y A	Langelio (X, Y) turinį (aktyvių telefonų skaičių) padidina skaičiumi A (jis gali būti ir teigiamas, ir neigiamas).	
2	L B R T	Klausia kiek aktyvuotų telefonų yra stačiakampėje srityje, kurią nusako langeliai (X,Y), čia L  X  R, B  Y  T	
3		Nutraukia programą. Komanda pateikiama tik vieną kartą ir tai yra paskutinioji komanda.	

Pradiniai duomenys visuomet bus nurodytuose rėžiuose, todėl nebūtina to tikrinti. Duomenys tokie, kad kvadrate esančių mobiliųjų telefonų skaičius niekada nebus mažesnis už nulį. Matricos eilutės ir stulpeliai numeruojami pradedant nuliu. Pvz., jei turime 44 dydžio lentelę, tai galios nelygybės 0  X  3 ir 0  Y  3.

Jūsų programa neturi nieko atsakinėti (išvesti) į jokias komandas išskyrus komandą 2. Jei buvo pateikta komanda 2, tuomet programa turi atsakyti į užklausą išvesdama vieną sveikąjį skaičių vienoje eilutėje į standartinį išvesties įrenginį.

NURODYMAI, KAIP PROGRAMUOTI

Žemiau pateiktuose pavyzdžiuose sveikasis skaičius last yra paskutinis eilutės skaičius, kurį perskaitėte, o answer yra sveikojo tipo kintamasis, kuriame saugomas jūsų gautas rezultatas.

Jei programuojate Paskalio kalba, tai skaityti iš standartinio įvesties įrenginio ir rašyti į standartinį išvesties įrenginį turite tokiu būdu:

Read(last); ... Readln;
Writeln(answer);

PAVYZDYS

stdin		        stdout		paaiškinimai

0 4  			Inicializuojama 44 dydžio matrica.
1 1 2 3  			Prie lentelės langelio (1,2) reikšmės pridedama +3.
2 0 0 2 2			Klausiama, kokia stačiakampio 0  X  2,  0  Y   2. langelių suma.
			3	Atsakoma į klausimą.
1 1 1 2  			Prie lentelės langelio (1,1) reikšmės pridedama +2.
1 1 2 -1            		Prie lentelės langelio (1,2) reikšmės pridedama -1.
2 1 1 2 3			Klausiama, kokia stačiakampio 1  X  2,  1  Y   3. langelių suma.
			4	Atsakoma į klausimą.
3				Užbaigiama programa.

RIBOJIMAI

Lentelės dydis	SS	11  SS  10241024	
Langelio V reikšmė bet kurio metu	V	0  V  215 –1  (= 32767)	
Prie langelio pridedamas skaičius	A	-215  A  215–1  (= 32767)	
Komandų skaičius pradiniuose duomenyse	U	3  U  60002	
Maksimalus telefonų skaičius visoje lentelėje.	M	M= 230	

Iš 20 testų, 16 yra tokie, kad lentelės dydis neviršija 512512.