Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream fin("bila.in");
- ofstream fout("bila.out");
- int n, m, b[21][21], i1, j1, maxim = -1;
- int a[21][21];
- int cnt;
- bool gasit = false;
- const int di[] = {-1, -1, -1, 0, 1, 1, 1, 0};
- const int dj[] = {-1, 0, 1, 1, 1, 0, -1, -1};
- void citire();
- void afisare();
- int interior(int i, int j);
- void back(int i, int j, int k);
- int margine(int i, int j);
- int main()
- {
- citire();
- b[i1][j1] = 1;
- back(i1, j1, 2);
- fout << cnt;
- }
- int interior(int i, int j)
- {
- return i >= 1 && i <= n && j <= m && j >= 1;
- }
- void citire()
- {
- fin >> n >> m;
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= m; j++)
- fin >> a[i][j];
- fin >> i1 >> j1;
- }
- void afisare()
- {
- for(int i = 1; i <= n; i++)
- {
- for(int j = 1; j <= m; j++)
- fout << b[i][j] << " ";
- fout << endl;
- }
- fout << endl;
- }
- int margine(int i, int j)
- {
- return i == 1 || i == n || j == 1 || j == m;
- }
- void back(int i, int j, int k)
- {
- for(int d = 0; d < 8; d++)
- {
- int inou = i + di[d];
- int jnou = j + dj[d];
- if(interior(inou, jnou) && a[inou][jnou] < a[i][j])
- {
- b[inou][jnou] = k;
- if(margine(inou, jnou))
- {
- cnt++;
- afisare();
- }
- else
- back(inou, jnou, k + 1);
- b[inou][jnou] = 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement