Advertisement
Guest User

Untitled

a guest
May 20th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <algorithm>
  5. using namespace std;
  6. vector< vector<int> > mat;
  7. vector< vector<int> > checked;
  8. int N, M, K, num, maxim, mini, maxi;
  9. void parc(int i, int j) {
  10.     if (!checked[i][j] && mat[i][j] - mini <= K && maxi - mat[i][j] <= K) {
  11.         ++num;
  12.         checked[i][j] = 1;
  13.         if (mat[i][j] < mini) {
  14.             mini = mat[i][j];
  15.         }
  16.         if (mat[i][j] > maxi) {
  17.             maxi = mat[i][j];
  18.         }
  19.         if (i < N - 1) {
  20.             parc(i+1, j);
  21.         }
  22.         if (i > 0) {
  23.             parc(i-1, j);        
  24.         }
  25.         if (j < M - 1) {
  26.            parc(i, j+1);
  27.         }
  28.         if (j > 0) {
  29.            parc(i, j-1);
  30.         }
  31.     }
  32.     if (num > maxim) {
  33.         maxim = num;
  34.     }
  35. }
  36. int main() {
  37.     ifstream in("p2.in");
  38.     ofstream out("p2.out");
  39.     in >> N >> M >> K;
  40.     mat.resize(N);
  41.     checked.resize(N);
  42.     maxim = 0;
  43.     for (int i = 0; i < N; ++i) {
  44.         mat[i].resize(M);
  45.         checked[i].resize(M);
  46.     }
  47.     for (int i = 0; i < N; ++i) {
  48.         for (int j = 0; j < M; ++j) {
  49.             in >> mat[i][j];
  50.             checked[i][j] = 0;
  51.         }
  52.     }
  53.     for (int i = 0; i < N; ++i) {
  54.         for (int j = 0; j < M; ++j) {
  55.             mini = maxi = mat[i][j];
  56.             parc(i, j);
  57.             num = 0;
  58.             /*checked.resize(N);
  59.             for (int i = 0; i < N; ++i) {
  60.                 checked[i].resize(M);
  61.             }*/
  62.             for (int i = 0; i < N; ++i) {
  63.                 for (int j = 0; j < M; ++j) {
  64.                     checked[i][j] = 0;
  65.                 }
  66.             }
  67.         }
  68.     }
  69.     out << maxim;
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement