# PBinfo #2637 – ZOO – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Într-o grădină zoologică reprezentată printr-o matrice A cu n linii și m coloane, fiecare cușcă se află într-o poziție din matrice și conține x animale. De exemplu, dacă A[2][6] = 5 înseamnă că în cușcă de pe linia 2 și coloana 6 se află 5 animale. Să se răspundă la Q întrebări de forma i1, j1, i2, j2 unde răspunsul va fi numărul de animale din dreptunghiul din matrice cu cordonatele colțului din stânga sus i1 și j1 și cordonatele colțului din dreapta jos i2 și j2, unde i reprezintă linia și j coloana.

Date de intrare
Fișierul de intrare zoo.in conține pe prima linie numerele n si m, separate printr-un spațiu, iar pe urmatoarele n linii, câte m numere, reprezentând matricea. Pe linia n + 2 se află numărul Q, iar pe următoarele Q linii, câte 4 numere (i1 j1 i2 j2) cu semnificația din enunț.

Date de ieșire
Fișierul de ieșire zoo.out pe fiecare linie i răspunsul la întrebarea i.

Restricții și precizări

1 ≤ n, m ≤ 100
1 ≤ Q ≤ 100.000
numărul maxim de animale dintr-o cușcă este de 1.000.000.000
numerotarea liniilor și a coloanelor din matrice începe de la 1

Exemplu:
zoo.in

4 4
1 2 4 1
8 1 3 2
3 1 2 2
8 1 3 1
2
2 2 4 4
3 1 4 3
zoo.out

16
18
Explicație
16=1+3+2+1+2+2+1+3+1  si  18=3+1+2+8+1+3

## Cod sursă C++

```cpp
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("zoo.in");
ofstream fout("zoo.out");
const int Dim = 1001;
long long int a[Dim][Dim], n, m;
int Q;
long long int s[Dim][Dim];
int main()
{
	fin >> n >> m;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= m; ++j)
			fin >> a[i][j];
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= m; ++j)
			s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j];
	int i1, j1, i2, j2;
	fin >> Q;
	while (Q--)
	{
		fin >> i1 >> j1 >> i2 >> j2;
		fout <<  s[i2][j2] - s[i1-1][j2] - s[i2][j1-1] + s[i1-1][j1-1] << '\n';
	}
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2637)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2637/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2637/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
