Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Copyright (c) 2013 xerpi
- */
- #include <iostream>
- #include <vector>
- using namespace std;
- void read_matrix(vector< vector<int> >& m, int rows, int columns);
- int sum_row(const vector< vector<int> >& m, int row, int n_rows);
- int sum_column(const vector< vector<int> >& m, int column, int n_columns);
- int sum_main_diagonal_1(const vector< vector<int> >& m, int size);
- int sum_main_diagonal_2(const vector< vector<int> >& m, int size);
- bool magic_square(const vector< vector<int> >& t);
- int main()
- {
- int n;
- cin >> n;
- vector< vector<int> > square(n, vector<int>(n));
- read_matrix(square, n, n);
- cout << magic_square(square) << endl;
- }
- bool magic_square(const vector< vector<int> >& t)
- {
- int size = t.size();
- //Check rows
- int sum = sum_row(t, 0, size);
- for (int i = 1; i < size; ++i) {
- int next_sum = sum_row(t, i, size);
- if (sum != next_sum) return false;
- }
- //Check columns
- for (int i = 0; i < size; ++i) {
- int next_sum = sum_column(t, i, size);
- if (sum != next_sum) return false;
- }
- //Check diagonals
- return (sum == sum_main_diagonal_1(t, size)) and
- (sum == sum_main_diagonal_2(t, size));
- }
- int sum_main_diagonal_1(const vector< vector<int> >& m, int size)
- {
- int sum = 0;
- for (int i = 0; i < size; ++i) {
- sum += m[i][i];
- }
- return sum;
- }
- int sum_main_diagonal_2(const vector< vector<int> >& m, int size)
- {
- int sum = 0;
- for (int i = 0; i < size; ++i) {
- sum += m[size-i-1][i];
- }
- return sum;
- }
- int sum_column(const vector< vector<int> >& m, int column, int n_columns)
- {
- int sum = 0;
- for (int i = 0; i < n_columns; ++i) {
- sum += m[i][column];
- }
- return sum;
- }
- int sum_row(const vector< vector<int> >& m, int row, int n_rows)
- {
- int sum = 0;
- for (int i = 0; i < n_rows; ++i) {
- sum += m[row][i];
- }
- return sum;
- }
- void read_matrix(vector< vector<int> >& m, int rows, int columns)
- {
- for (int i = 0; i < rows; ++i) {
- for (int j = 0; j < columns; ++j) {
- cin >> m[i][j];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement