70 lines
1.1 KiB
C++

#include <iostream>
#include <omp.h>
#include <vector>
uint64_t sum_rows(int N, std::vector<std::vector<int>> &matrix)
{
uint64_t result = 1;
for (int i = 0; i < N; i++)
{
int sum = 0;
for (int j = 0; j < N; j++)
{
sum += matrix[i][j];
}
result *= sum;
}
return result;
}
uint64_t sum_columns(int N, std::vector<std::vector<int>> &matrix)
{
uint64_t result = 1;
for (int j = 0; j < N; j++)
{
int sum = 0;
for (int i = 0; i < N; i++)
{
sum += matrix[i][j];
}
result *= sum;
}
return result;
}
int main()
{
int N = 3;
std::vector<std::vector<int>> matrix(N, std::vector<int>(N));
int st = 1;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
matrix[i][j] = st++;
}
}
uint64_t result1, result2;
#pragma omp parallel
{
#pragma omp sections
{
#pragma omp section
{
result1 = sum_rows(N, matrix);
}
#pragma omp section
{
result2 = sum_columns(N, matrix);
}
}
}
printf("Rezultat: %ld\n", (result1 + result2));
return 0;
}