Gigel este profesor
de informatica, dar la un moment al existentei sale a ajuns la concluzia ca
trebuie sa îsi deschida o afacere proprie. Prin urmare, Gigel a înfiintat
o firma care se ocupa cu închirieri de locuinte. Firma a prosperat fulminant,
astfel ca acum firma lui Gigel are la dispozitie numeroase apartamente si realizeaza
numeroase tranzactii. Ofertele si solicitarile sunt atât de multe, încât
Gigel a decis ca pentru a raspunde eficient cerintelor clientilor trebuie sa
realizeze un program.
În primul rând Gigel a luat harta zonei si a trasat pe ea un caroiaj
pentru a putea identifica cu usurinta imobilele în care firma are apartamente
de închiriat. Astfel a obtinut o matrice cu n
linii (numerotate de la 1 la
n) si m
coloane (numerotate de la 1 la
m), pozitia unui imobil fiind
identificata prin numarul liniei si al coloanei în care este pozitionat
imobilul.
Chiria pentru apartamentele situate în acelasi imobil este aceeasi. Deci
Gigel trebuie sa retina pentru fiecare imobil numarul de apartamente disponibile
si costul chiriei.
Gigel are nevoie de un program care sa execute eficient urmatoarele operatii:
1. închirierea unui apartament;
2. eliberarea unui apartament;
3. determinarea venitului total obtinut din închirieri într-o zona
dreptunghiulara data.
Cerinta
Scrieti programul de care are nevoie
Gigel!
Date de intrare
Fisierul de intrare firma1.in
contine:
– pe prima linie numerele naturale n
si m separate printr-un spatiu,
reprezentand numarul de linii si respectiv numarul de coloane de pe harta;
– pe cea de a doua linie un numar natural p,
reprezentând numarul de imobile;
– pe fiecare dintre urmatoarele p
linii se afla informatii despre un imobil sub forma x
y nrmax nr pret, cu semnificatia „imobilul este plasat pe linia x,
coloana y, are nrmax
apartamente de închiriat, dintre care nr
sunt deja închiriate, chiria pentru fiecare fiind pret
$”;
– pe linia urmatoare se afla un numar natural O,
reprezentând numarul de operatii care se efectueaza;
– pe fiecare dintre urmatoarele O
linii este descrisa câte o operatie; linia care descrie o operatie începe
cu un numar natural reprezentând tipul operatiei (1,
2 sau 3).
Daca tipul operatiei este 1,
urmeaza doua numere naturale x
si y, separate printr-un spatiu,
care reprezinta pozitia imobilului în care se închiriaza un apartament
(daca în pozitia respectiva nu exista nici un imobil sau în imobilul
respectiv nu mai sunt apartamente libere, operatia va fi ignorata).
Daca tipul operatiei este 2,
urmeaza doua numere naturale x
si y, separate printr-un spatiu,
care reprezinta pozitia imobilului în care se elibereaza un apartament
(daca în pozitia specificata nu exista nici un imobil, sau în imobil
nu exista apartamente închiriate, operatia va fi ignorata).
Daca tipul operatiei este 3,
urmeaza patru numere naturale x1 y1
x2 y2; (x1, y1)
si (x2, y2)
reprezentând coordonatele (linie, coloana) a doua colturi opuse ale unei
zone dreptunghiulare de pe harta (aceasta operatie determina calcularea venitului
obtinut din închirieri în zona respectiva si afisarea acestuia în
fisierul de iesire).
Date de iesire
Fisierul de iesire firma1.out
va contine câte o linie pentru fiecare operatie de tipul 3 din fisierul
de intrare, linie pe care va fi scris venitul calculat de operatia respectiva.
Se va pastra ordinea operatiilor din fisierul de intrare.
Restrictii si precizari
100 <= n, m <= 1
000
10 000 <= O <= 50
000
1
<= p <= 100 000
Toate coordonatele x,
y sunt corecte (1
<= x <= n, 1 <= y <= m)
0
<= nr <= nrmax <= 100; 1 <= pret <= 100
Nu exista doua imobile
plasate în aceeasi pozitie.
Venitul total din orice
zona nu depaseste 2 000 000 000.