Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. const int N = 100;
  7.  
  8. int fB(int n, int m, int a[N][N], int i1, int j1, int i2, int j2){
  9. ///Indexare corespunzatoare pentru memorie optima
  10. ///dar care respecta parametrii de intrare ceruti
  11. i1 -= 1;
  12. i2 -= 1;
  13. j1 -= 1;
  14. j2 -= 1;
  15.  
  16. ///Verificam sa nu iesim din matrice
  17. if ( i2 < 0 || i2 >= n || j2 < 0 || j2 >= m )
  18. return 2;
  19.  
  20. ///Determinam ratiile
  21. int ri = i2-i1;
  22. int rj = j2-j1;
  23. int rv = a[i2][j2] - a[i1][j1];
  24.  
  25. ///Apreciem ca ratiile sa nu fie nule
  26. if ( !ri || !rj || !rv )
  27. return 2;
  28.  
  29. ///Orice serie are cel putin 2 elemente
  30. int cnt = 2;
  31.  
  32. while ( true ){
  33. ///Updatam pozitiile
  34. i1 = i2;
  35. j1 = j2;
  36. i2 += ri;
  37. j2 += rj;
  38.  
  39. ///Verificam sa nu iesim din matrice
  40. if ( i2 < 0 || i2 >= n || j2 < 0 || j2 >= m )
  41. break;
  42.  
  43. ///Verificam sa respecte ratia valorii
  44. if ( a[i2][j2] - a[i1][j1] != rv )
  45. break;
  46.  
  47. ///Incrementam lungimea
  48. cnt++;
  49. }
  50.  
  51. return cnt;
  52. }
  53.  
  54. int fC(int n, int m, int a[N][N])
  55. {
  56. ///Initializam maximul lungimii
  57. int maxL = 2;
  58.  
  59. ///Parcurgem elementele matricii
  60. for ( int i = 1; i <= n; i++ )
  61. for ( int j = 1; j <= m; j++ )
  62.  
  63. ///Determinam ratiile posibile pentru pozitii
  64. for ( int ri = 1; ri <= n/2; ri++ )
  65. for ( int rj = -m/2; rj <= m/2; rj++ ){
  66.  
  67. ///Avem grija ca ratia sa nu fie nula
  68. if ( rj == 0 )
  69. continue;
  70.  
  71. ///Determinam lungimea si updatam maximul
  72. int temp = fB(n, m, a, i, j, i+ri, j+rj);
  73. if ( temp > maxL )
  74. maxL = temp;
  75. }
  76. return maxL;
  77. }
  78.  
  79. int main(){
  80. int a[N][N];
  81. int n, m;
  82. ifstream fin("progresie.in");
  83. fin >> n >> m;
  84. for ( int i = 0; i < n; i++ )
  85. for ( int j = 0; j < m; j++ )
  86. fin >> a[i][j];
  87. cout << fC(n, m, a);
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement