Cerința
Intr-o gradina zoologica reprezentata printr-o matrice A
cu n
linii si m
coloane. Fiecare cusca se afla intr-o pozitie din matrice si contine x
animale. De exemplu daca A[2][6] = 5
inseamna ca in cusca de pe linia 2
si coloana 6
se afla 5
animale. Sa se raspunda la Q
intrebari de forma i1, j1, i2, j2
unde raspunsul va fi numarul de animale din dreptunghiul din matrice cu cordonatele coltului din stanga sus i1 si j1
si cordonatele coltului din dreapta jos i2 si j2
, unde i
reprezinta linia si j
coloana.
Date de intrare
Fișierul de intrare zoo.in
conține pe prima linie numerele n
si m
, separate printr-un spatiu, iar pe urmatoarele n
linii, cate m
numere, reprezentand matricea. Pe linia n + 2
se afla numarul Q
, iar pe urmatoarele Q
linii, cate 4
numere (i1 j1 i2 j2)
cu semnificatia din enunt.
Date de ieșire
Fișierul de ieșire zoo.out
pe fiecare linie i
raspunsul la intrebarea i
.
Restricții și precizări
1 ≤ n, m ≤ 100
1 ≤ Q ≤ 100000
- numarul maxim de animale dintr-o cusca este de
1.000.000.000
- numerotarea liniilor si a coloanelor din matrice incepe 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
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema ZOO:
#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;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2637 ZOO
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2637 ZOO de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!