#include <iostream>
//#include <vector>
#include <omp.h>
#include <climits>
using namespace std;
void min_reduction(int arr[], int n) {
int min_value = INT_MAX;
#pragma omp parallel for reduction(min: min_value)
for (int i = 0; i < n; i++) {
if (arr[i] < min_value) {
min_value = arr[i];
}
}
cout << "Minimum value: " << min_value << endl;
}
void max_reduction(int arr[], int n) {
int max_value = INT_MIN;
#pragma omp parallel for reduction(max: max_value)
for (int i = 0; i < n; i++) {
if (arr[i] > max_value) {
max_value = arr[i];
}
}
cout << "Maximum value: " << max_value << endl;
}
void sum_reduction(int arr[], int n) {
int sum = 0;
#pragma omp parallel for reduction(+: sum)
for (int i = 0; i < n; i++) {
sum += arr[i];
}
cout << "Sum: " << sum << endl;
}
void average_reduction(int arr[], int n) {
int sum = 0;
#pragma omp parallel for reduction(+: sum)
for (int i = 0; i < n; i++) {
sum += arr[i];
}
cout << "Average: " << (double)sum / (n-1) << endl;
}
int main() {
int *arr,n;
cout<<"\n enter total no of elements=>";
cin>>n;
arr=new int[n];
cout<<"\n enter elements=>";
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
// int arr[] = {5, 2, 9, 1, 7, 6, 8, 3, 4};
// int n = size(arr);
min_reduction(arr, n);
max_reduction(arr, n);
sum_reduction(arr, n);
average_reduction(arr, n);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgovLyNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxvbXAuaD4KI2luY2x1ZGUgPGNsaW1pdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgbWluX3JlZHVjdGlvbihpbnQgYXJyW10sIGludCBuKSB7CiAgaW50IG1pbl92YWx1ZSA9IElOVF9NQVg7CiAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIHJlZHVjdGlvbihtaW46IG1pbl92YWx1ZSkKICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJaWYgKGFycltpXSA8IG1pbl92YWx1ZSkgewogIAltaW5fdmFsdWUgPSBhcnJbaV07Cgl9CiAgfQogIGNvdXQgPDwgIk1pbmltdW0gdmFsdWU6ICIgPDwgbWluX3ZhbHVlIDw8IGVuZGw7Cn0Kdm9pZCBtYXhfcmVkdWN0aW9uKGludCBhcnJbXSwgaW50IG4pIHsKICBpbnQgbWF4X3ZhbHVlID0gSU5UX01JTjsKICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgcmVkdWN0aW9uKG1heDogbWF4X3ZhbHVlKQogIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CglpZiAoYXJyW2ldID4gbWF4X3ZhbHVlKSB7CiAgCW1heF92YWx1ZSA9IGFycltpXTsKCX0KICB9CiAgY291dCA8PCAiTWF4aW11bSB2YWx1ZTogIiA8PCBtYXhfdmFsdWUgPDwgZW5kbDsKfQp2b2lkIHN1bV9yZWR1Y3Rpb24oaW50IGFycltdLCBpbnQgbikgewogIGludCBzdW0gPSAwOwogICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgcmVkdWN0aW9uKCs6IHN1bSkKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCXN1bSArPSBhcnJbaV07CiAgfQogIGNvdXQgPDwgIlN1bTogIiA8PCBzdW0gPDwgZW5kbDsKfQp2b2lkIGF2ZXJhZ2VfcmVkdWN0aW9uKGludCBhcnJbXSwgaW50IG4pIHsKICBpbnQgc3VtID0gMDsKICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgcmVkdWN0aW9uKCs6IHN1bSkKICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJc3VtICs9IGFycltpXTsKICB9CiAgY291dCA8PCAiQXZlcmFnZTogIiA8PCAoZG91YmxlKXN1bSAvIChuLTEpIDw8IGVuZGw7Cn0KaW50IG1haW4oKSB7CiAgICBpbnQgKmFycixuOwogICAgY291dDw8IlxuIGVudGVyIHRvdGFsIG5vIG9mIGVsZW1lbnRzPT4iOwogICAgY2luPj5uOwogICAgYXJyPW5ldyBpbnRbbl07CiAgICBjb3V0PDwiXG4gZW50ZXIgZWxlbWVudHM9PiI7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgewogICAJIGNpbj4+YXJyW2ldOwogICAgfQovLyAgIGludCBhcnJbXSA9IHs1LCAyLCA5LCAxLCA3LCA2LCA4LCAzLCA0fTsKLy8gICBpbnQgbiA9IHNpemUoYXJyKTsKICBtaW5fcmVkdWN0aW9uKGFyciwgbik7CiAgbWF4X3JlZHVjdGlvbihhcnIsIG4pOwogIHN1bV9yZWR1Y3Rpb24oYXJyLCBuKTsKICBhdmVyYWdlX3JlZHVjdGlvbihhcnIsIG4pOwp9