Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define Max 2002
- using namespace std;
- ifstream fin("meteoriti.in");
- ofstream fout("meteoriti.out");
- int N, M, R, matrice[Max][Max], x, maxim, arie_max, nr_arie, nr, B[Max + 1][Max + 1];
- struct coord
- {
- int r, c;
- } a, b;
- void Fill(int i, int j)
- {
- if(matrice[i][j] == maxim)
- {
- matrice[i][j] = -1;
- nr_arie++;
- Fill(i - 1, j);
- Fill(i + 1, j);
- Fill(i, j - 1);
- Fill(i, j + 1);
- }
- }
- void aduna(int x1, int y1, int x2, int y2, int v)
- {
- B[x1][y1] += v;
- B[x1][y2 + 1] -= v;
- B[x2 + 1][y1] -= v;
- B[x2 + 1][y2 + 1] += v;
- }
- void citire()
- {
- fin >> N >> M >> R;
- for(int i = 1; i <= R; ++i)
- {
- fin >> a.r >> a.c >> b.r >> b.c >> x;
- aduna(a.r, a.c, b.r, b.c, x);
- }
- matrice[1][1] = B[1][1];
- for(int i = 2; i <= N; ++i)
- for(int j = 1; j <= M; ++j)
- matrice[i][j] = matrice[i - 1][j - 1] + B[i][j];
- for(int i = 1; i <= N; ++i)
- for(int j = 1; j <= M; ++j)
- matrice[i][j] += matrice[i - 1][j] + matrice[i - 1][j] - matrice[i - 1][j - 1];
- for(int i = 1; i <= N; ++i)
- {
- for(int j = 1; j <= M; ++j)
- fout << B[i][j] << " ";
- fout << endl;
- }
- for(int i = 1; i <= N; ++i)
- for(int j = 1; j <= M; ++j)
- if(matrice[i][j] > maxim)
- maxim = matrice[i][j];
- for(int i = 1; i <= N; ++i)
- for(int j = 1; j <= M; ++j)
- {
- if(matrice[i][j] == 0)
- nr++;
- if(matrice[i][j] == maxim)
- {
- nr_arie = 0;
- Fill(i, j);
- if(nr_arie > arie_max)
- arie_max = nr_arie;
- }
- }
- }
- int main()
- {
- citire();
- fout << arie_max << " " << nr;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement