#include <stdio.h>
#include <omp.h>
#define ARRAY_SIZE 3000
#define NUM_THREADS 4
int main() {
int i, sum = 0;
int array[ARRAY_SIZE];
// Initialize array
for (i = 0; i < ARRAY_SIZE; i++) {
array[i] = i + 1;
}
// Calculate sum in parallel
#pragma omp parallel for num_threads(NUM_THREADS) reduction(+:sum)
for (i = 0; i < ARRAY_SIZE; i++) {
sum += array[i];
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxvbXAuaD4KCiNkZWZpbmUgQVJSQVlfU0laRSAzMDAwCiNkZWZpbmUgTlVNX1RIUkVBRFMgNAoKaW50IG1haW4oKSB7CiAgICBpbnQgaSwgc3VtID0gMDsKICAgIGludCBhcnJheVtBUlJBWV9TSVpFXTsKCiAgICAvLyBJbml0aWFsaXplIGFycmF5CiAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRTsgaSsrKSB7CiAgICAgICAgYXJyYXlbaV0gPSBpICsgMTsKICAgIH0KCiAgICAvLyBDYWxjdWxhdGUgc3VtIGluIHBhcmFsbGVsCiAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3IgbnVtX3RocmVhZHMoTlVNX1RIUkVBRFMpIHJlZHVjdGlvbigrOnN1bSkKICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFOyBpKyspIHsKICAgICAgICBzdW0gKz0gYXJyYXlbaV07CiAgICB9CgogICAgcHJpbnRmKCJTdW06ICVkXG4iLCBzdW0pOwoKICAgIHJldHVybiAwOwp9Cg==