Cerința
Gigel are o livadă împărțită în n*m
sectoare, dispuse pe n
linii, numeroate de la 1
la n
și m
coloane, numerotate de la 1
la m
. În fiecare sector se află un cireș, care conține o cantitate de cireșe cunoscută. Gigel va culege toate cireșele din cireșii dispuși într-o zonă dreptunghiulară din livadă. El poate să aleagă între k
zone și dorește să culeagă cât mai multe cireșe.
Scrieți un program care determină cantitatea maximă de cireșe pe care o poate culege Gigel din una dintre cele k
zone date.
Date de intrare
Programul citește de la tastatură numerele n m k
, cu semnificația de mai sus. Apoi citește cantitatea de cireșe din fiecare sector, linie cu linie. Apoi citește k
perechi de coordonate i1 j1 i2 j2
, unde i1 j1
reprezintă coordonatele (linie coloana) ale colțului stânga-sus al zonei curente, iar i2 j2
reprezintă coordonatele (linie coloana) ale colțului dreapta-jos al zonei curente.
Date de ieșire
Programul va afișa pe ecran numărul C
, reprezentând cantitatea maximă de cireșe care poate fi culeasă din una dintre zonele date.
Restricții și precizări
1 ≤ n , m , k ≤ 100
- cantitatea de cireșe din fiecare sector este un număr natural mai mic decât
1000
1 ≤ i1 ≤ i2 ≤ n
1 ≤ j1 ≤ j2 ≤ m
Exemplu
Intrare
4 6 3 3 1 10 7 5 2 1 5 3 8 6 3 10 1 3 8 10 8 6 1 8 3 9 1 2 2 3 5 1 2 4 6 2 1 4 3
Ieșire
102
Explicație
Cantitatea de cireșe care pot fi culese din zona a doua este 102
și este mai mare decât cantitățile din celelalte două zone.
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 Cirese:
#include <iostream>
using namespace std;
int n,m,k,a[101][101];
int main()
{
cin >> n >> m >> k;
for(int i = 1 ; i <= n ; ++i)
for(int j = 1 ; j <= m ; ++j)
cin >> a[i][j];
int Max = 0;
for(int p = 1 ; p <= k ; p ++)
{
int i1,j1,i2,j2;
cin >> i1 >> j1 >> i2 >> j2;
int s = 0;
for(int i = i1 ; i <= i2 ; i ++)
for(int j = j1 ; j <= j2 ; j ++)
s += a[i][j];
if(s > Max)
Max = s;
}
cout << Max << endl;
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 #764 Cirese
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #764 Cirese 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!