Advertisement
Guest User

Bila

a guest
Oct 16th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. ifstream fin("bila.in");
  5. ofstream fout("bila.out");
  6.  
  7. int a[25][25],r[21][21],n,m,maxim;
  8.  
  9. bool valid(int lc, int cc, int val)
  10. {
  11. if(lc >= 1 && lc <= n && cc >= 1 && cc <= m )
  12. {
  13. return val > a[lc][cc];
  14. }
  15. return 0;
  16. }
  17. bool solutie(int lc, int cc)
  18. {
  19. return lc == 1 || lc == n || cc == 1 || cc == m;
  20. }
  21. void prelucrare_sol(int lc, int cc)
  22. {
  23. if(r[lc][cc] > maxim)
  24. {
  25. maxim = r[lc][cc];
  26. }
  27.  
  28. }
  29. void backt(int lc, int cc)
  30. {
  31. int dl[4] = {-1,0,1,0};
  32. int dc[4] = {0,1,0,-1};
  33.  
  34. for(int k=0; k<4; k++)
  35. {
  36. int val = a[lc][cc];
  37.  
  38. lc = dl[k] + lc;
  39. cc = dc[k] + cc;
  40.  
  41. if(valid(lc, cc, val))
  42. {
  43. r[lc][cc] = r[lc - dl[k]][cc - dc[k]] + 1;
  44.  
  45. if(solutie(lc,cc))
  46. prelucrare_sol(lc,cc);
  47.  
  48. else
  49. backt(lc, cc);
  50. }
  51.  
  52. lc = lc - dl[k];
  53. cc = cc - dc[k];
  54. }
  55. }
  56. int main()
  57. {
  58. int i_start,j_start;
  59. fin>>n>>m;
  60. for(int i=1; i<=n; i++)
  61. {
  62. for(int j=1; j<=m; j++)
  63. {
  64. fin>>a[i][j];
  65. }
  66. }
  67. fin>>i_start>>j_start;
  68.  
  69. r[i_start][j_start]=1;
  70.  
  71. backt(i_start, j_start);
  72.  
  73. fout<<maxim<<'\n';
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement