#include <stdio.h>
#include <omp.h>
#define N 8192
#define M 64
int main(){
int i;
int A[N];
int b[M] = {0}; // تم التهيئة مباشرة
int sigma = 0;
// تبقى سيريال كما طلب
for(i = 0; i < N; i++)
A[i] = (int)(0.25 * i + 0.75 * i + 1) % M; // أعداد بين 0 و M-1
// تبقى سيريال كما طلب
for(i = 0; i < M; i++)
b[i] = 0;
// ✅ التوازي لحساب الهستوغرام b[]
#pragma omp parallel for
for(i = 0; i < N; i++) {
#pragma omp atomic
b[A[i]]++;
}
// ✅ التوازي لتحديث عناصر A باستخدام b
#pragma omp parallel for schedule(static)
for(i = 0; i < N; i++) {
A[i] += b[i % M];
}
// ✅ التوازي لحساب المجموع sigma باستخدام reduction
#pragma omp parallel for reduction(+:sigma) schedule(static)
for(i = 0; i < N; i++) {
sigma += A[i];
}
printf("sigma = %d\n", sigma
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxvbXAuaD4KCiNkZWZpbmUgTiA4MTkyCiNkZWZpbmUgTSA2NAoKaW50IG1haW4oKXsKICBpbnQgaTsKICBpbnQgQVtOXTsKICBpbnQgYltNXSA9IHswfTsgIC8vINiq2YUg2KfZhNiq2YfZitim2Kkg2YXYqNin2LTYsdipCiAgaW50IHNpZ21hID0gMDsKCiAgLy8g2KrYqNmC2Ykg2LPZitix2YrYp9mEINmD2YXYpyDYt9mE2KgKICBmb3IoaSA9IDA7IGkgPCBOOyBpKyspCiAgICAgIEFbaV0gPSAoaW50KSgwLjI1ICogaSArIDAuNzUgKiBpICsgMSkgJSBNOyAgIC8vINij2LnYr9in2K8g2KjZitmGIDAg2YggTS0xCgogIC8vINiq2KjZgtmJINiz2YrYsdmK2KfZhCDZg9mF2Kcg2LfZhNioCiAgZm9yKGkgPSAwOyBpIDwgTTsgaSsrKQogICAgICBiW2ldID0gMDsKCiAgLy8g4pyFINin2YTYqtmI2KfYstmKINmE2K3Ys9in2Kgg2KfZhNmH2LPYqtmI2LrYsdin2YUgYltdCiAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yCiAgZm9yKGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICNwcmFnbWEgb21wIGF0b21pYwogICAgICBiW0FbaV1dKys7CiAgfQoKICAvLyDinIUg2KfZhNiq2YjYp9iy2Yog2YTYqtit2K/ZitirINi52YbYp9i12LEgQSDYqNin2LPYqtiu2K/Yp9mFIGIKICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3Igc2NoZWR1bGUoc3RhdGljKQogIGZvcihpID0gMDsgaSA8IE47IGkrKykgewogICAgICBBW2ldICs9IGJbaSAlIE1dOwogIH0KCiAgLy8g4pyFINin2YTYqtmI2KfYstmKINmE2K3Ys9in2Kgg2KfZhNmF2KzZhdmI2Lkgc2lnbWEg2KjYp9iz2KrYrtiv2KfZhSByZWR1Y3Rpb24KICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgcmVkdWN0aW9uKCs6c2lnbWEpIHNjaGVkdWxlKHN0YXRpYykKICBmb3IoaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgc2lnbWEgKz0gQVtpXTsKICB9CgogIHByaW50Zigic2lnbWEgPSAlZFxuIiwgc2lnbWEpOwoKICByZXR1cm4gMDsKfQo=