Advertisement
a53

SubmatrixSumMax

a53
Feb 27th, 2020
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,a[305][305],b[305][305],v[305];
  4.  
  5. void Citire()
  6. {
  7. cin>>n;
  8. for(int i=1;i<= n;++i)
  9. for(int j=1;j<=n;++j)
  10. cin>>a[i][j];
  11. }
  12.  
  13. void SumePartiale()
  14. {
  15. for(int i=1;i<=n;++i)
  16. for(int j=1;j<=n;++j)
  17. b[i][j]=a[i][j]+b[i-1][j];
  18. }
  19.  
  20. int SecSumMax(int v[],int n)
  21. {
  22. int s,smax;
  23. s=smax=v[1];
  24. if(s<0)
  25. s=0;
  26. for(int i=2;i<=n;++i)
  27. {
  28. s+=v[i];
  29. if(s>smax)
  30. smax=s;
  31. if(s<0)
  32. s=0;
  33. }
  34. return smax;
  35. }
  36.  
  37. void Solutie()
  38. {
  39. int ssmax,suma;
  40. ssmax=-200000000;
  41. for(int i1=1;i1<=n;++i1)
  42. for(int i2=i1;i2<=n;++i2)
  43. {
  44. for(int j=1;j<=n;++j)
  45. v[j]=b[i2][j]-b[i1-1][j];
  46. suma=SecSumMax(v,n);
  47. ssmax=max(ssmax,suma);
  48. }
  49. cout<<ssmax;
  50. }
  51.  
  52. int main()
  53. {
  54. Citire();
  55. SumePartiale();
  56. Solutie();
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement