#include<omp.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
time_t t1;
unsigned long int RandomIntGen(){
return ( rand()%( 1000000000 - 1 +1)) +1 ; }
clock_t begin, end;
int main()
{
//double pi,x;
unsigned long long int i,Array_size = 10000000;
int n=15;
//printf("Enter size?: \n");
//printf("\n array size! : ");
//scanf("%llu",&Array_size);
//scanf("%d",&n);
//fflush(stdout);
unsigned long int x[Array_size], MAX = 0, MIN= 100000001;
for( i=0; i< Array_size; i++)
x[i] = RandomIntGen();
//printf("thread count?: ");
//fflush(stdout);
#pragma omp parallel num_threads(n)
{
#pragma omp parallel for /*shared(MAX, x)*/ reduction(max:MAX)
for(i=0;i<Array_size;i++){
MAX = MAX > x[i] ? MAX : x[i];
}
// min is working fine
#pragma omp parallel for /*shared(MIN, x)*/ reduction(min:MIN)
for(i=0;i<Array_size;i++){
MIN = MIN < x[i] ? MIN : x[i];
}
}
//printf("\n array size! : %llu\n",Array_size);
//printf(" thread count : %d\n",n);
printf(" MAX: %lu\n MIN: %lu\n",MAX
,MIN
); double t = (end-begin)/ CLOCKS_PER_SEC ;
//printf(" time: sci:%e s\n",t);
return 0;
}
I2luY2x1ZGU8b21wLmg+CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgojaW5jbHVkZTx0aW1lLmg+Cgp0aW1lX3QgdDE7CnVuc2lnbmVkIGxvbmcgaW50IFJhbmRvbUludEdlbigpewogIHJldHVybiAoIHJhbmQoKSUoIDEwMDAwMDAwMDAgLSAxICsxKSkgKzEgOwp9CgoKY2xvY2tfdCBiZWdpbiwgZW5kOwoKCmludCBtYWluKCkKewogICAgLy9kb3VibGUgcGkseDsKICAgIHNyYW5kKCh1bnNpZ25lZCkgdGltZSAoJnQxKSk7CiAgIAoKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgaSxBcnJheV9zaXplID0gMTAwMDAwMDA7CiAgICBpbnQgbj0xNTsKICAgIAogICAgLy9wcmludGYoIkVudGVyIHNpemU/OiBcbiIpOwogICAgLy9wcmludGYoIlxuIGFycmF5IHNpemUhIDogIik7CiAgICAvL3NjYW5mKCIlbGx1IiwmQXJyYXlfc2l6ZSk7CiAgICBwcmludGYoIiB0aHJlYWQgY291bnQgOiAiKTsgCiAgICAvL3NjYW5mKCIlZCIsJm4pOyAKICAgIC8vZmZsdXNoKHN0ZG91dCk7CiAgICAKICAgIHVuc2lnbmVkIGxvbmcgaW50IHhbQXJyYXlfc2l6ZV0sIE1BWCA9IDAsIE1JTj0gMTAwMDAwMDAxOwogICAgCiAgICBmb3IoIGk9MDsgaTwgQXJyYXlfc2l6ZTsgaSsrKQogICAgICAgIHhbaV0gPSBSYW5kb21JbnRHZW4oKTsKICAgIC8vcHJpbnRmKCJ0aHJlYWQgY291bnQ/OiAiKTsKICAgIC8vZmZsdXNoKHN0ZG91dCk7CiAgICBiZWdpbiA9IGNsb2NrKCk7ICAgIAogICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMobikKICAgIHsKICAgIAogICAgICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciAvKnNoYXJlZChNQVgsIHgpKi8gcmVkdWN0aW9uKG1heDpNQVgpCiAgICAgICAgZm9yKGk9MDtpPEFycmF5X3NpemU7aSsrKXsKICAgICAgICAgICAgTUFYID0gTUFYID4geFtpXSA/IE1BWCA6IHhbaV07CiAgICAgICAgfQogICAgCiAgICAgICAgLy8gbWluIGlzIHdvcmtpbmcgZmluZQogICAgICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciAvKnNoYXJlZChNSU4sIHgpKi8gcmVkdWN0aW9uKG1pbjpNSU4pCiAgICAgICAgZm9yKGk9MDtpPEFycmF5X3NpemU7aSsrKXsKICAgICAgICAgICAgTUlOID0gTUlOIDwgeFtpXSA/IE1JTiA6IHhbaV07CiAgICAgICAgfQogICAgCiAgICB9CiAgICAKICAgIGVuZCA9IGNsb2NrKCk7CiAgICAKICAgIC8vcHJpbnRmKCJcbiBhcnJheSBzaXplISA6ICVsbHVcbiIsQXJyYXlfc2l6ZSk7CiAgICAvL3ByaW50ZigiIHRocmVhZCBjb3VudCA6ICVkXG4iLG4pOyAgICAKICAgIHByaW50ZigiIE1BWDogJWx1XG4gTUlOOiAlbHVcbiIsTUFYLE1JTik7CiAgICBkb3VibGUgdCA9IChlbmQtYmVnaW4pLyBDTE9DS1NfUEVSX1NFQyA7CiAgICBwcmludGYoIiB0aW1lOiAlbGYgc1xuIix0KTsKICAgIC8vcHJpbnRmKCIgdGltZTogc2NpOiVlIHNcbiIsdCk7CgogICAgcmV0dXJuIDA7Cn0KCg==