fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. using ll=long long;
  4. const int maxn=1e6+6;
  5. const int MAX=100005;
  6. ll A[MAX],f[MAX];
  7. int n,m;
  8. int main()
  9. {
  10. ios_base::sync_with_stdio(0);
  11. cin.tie(0);cout.tie(0);
  12. cin>>n>>m;
  13. ////Nhập mảng
  14. /* Cách nhập 1 :
  15.   for(int i=1;i<=n*m;i++)
  16.   cin>>A[i];*/
  17. ////Cách nhập 2:
  18. for(int i=1;i<=n;i++)
  19. for(int j=1;j<=m;j++)
  20. cin>>A[(i-1)*m+j];
  21. for(int i=1;i<=n;i++)
  22. {
  23. for(int j=1;j<=m;j++)
  24. {
  25. /*
  26.   Công thức tính tổng hcn có đỉnh trên bên trái (1,1) và đỉnh dưới bên phải (i,j):
  27.   f[(i-1)*m+j]=f[(i-1)*m+j-1]+f[(i-2)*m+j]-f[(i-2)*m+j-1]+A[(i-1)*m+j];
  28.   */
  29. //// Nhưng mảng không có biên cũng như chỉ số (i-2) có thể âm
  30. //// nên cần thêm điều kiện
  31. if(i==1) f[(i-1)*m+j]+=f[(i-1)*m+j-1];
  32. else /// i!=1
  33. {
  34. if(j==1) /// xử lí biên bên trái
  35. f[(i-1)*m+j]+=f[(i-2)*m+j];
  36. else ///j!=1
  37. f[(i-1)*m+j]+=f[(i-1)*m+j-1]+f[(i-2)*m+j]-f[(i-2)*m+j-1];
  38.  
  39. }
  40. f[(i-1)*m+j]+=A[(i-1)*m+j];
  41. cout<<f[(i-1)*m+j]<<' ';
  42. }
  43. cout<<'\n';
  44. }
  45. }
  46.  
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
Standard output is empty