Advertisement
ikseek

Untitled

Mar 18th, 2015
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. llong vert_summ(int **arr, int n) {
  2.         assert (arr != NULL);
  3.         assert (n > 0);
  4.         assert (n % 2 == 1);
  5.  
  6.         int middle = n / 2;
  7.         llong summ = 0;
  8.         for (int i = 0; i != n; ++i) {
  9.                 summ += arr[i][middle];
  10.         }
  11.         return summ;
  12. }
  13.  
  14. llong left_diag(int **arr, int n) {
  15.         assert (arr != NULL);
  16.         assert (n > 0);
  17.         assert (n % 2 == 1);
  18.  
  19.         llong summ = 0;
  20.         for (int i = 0; i != n; ++i) {
  21.                 summ += arr[i][i];
  22.         }
  23.         return summ;
  24. }
  25.  
  26. llong right_diag(int **arr, int n) {
  27.         assert (arr != NULL);
  28.         assert (n > 0);
  29.         assert (n % 2 == 1);
  30.  
  31.         llong summ = 0;
  32.         for (int i = 0; i != n; ++i) {
  33.                 summ += arr[i][n-i];
  34.         }
  35.         return summ;
  36. }
  37.  
  38. llong sum2(int **arr, int n) {
  39.         assert (arr != NULL);
  40.         assert (n > 0);
  41.         assert (n % 2 == 1);
  42.  
  43.         int middle = n / 2;
  44.         return vert_summ(arr, n) + right_diag(arr, n) - arr[middle][middle];
  45. }
  46.  
  47. llong sum2_opt(int **arr, int n) {
  48.         assert (arr != NULL);
  49.         assert (n > 0);
  50.         assert (n % 2 == 1);
  51.  
  52.         int middle = n / 2;
  53.         llong vert_summ = 0;
  54.         llong right_diag = 0;
  55.         for (int i = 0; i != n; ++i) {
  56.                 vert_summ += arr[i][middle];
  57.                 right_diag += arr[i][n-i];
  58.         }
  59.         return vert_summ + right_diag - arr[middle][middle];
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement