//Enter you code here.
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
int countval = 3;
int valu = 0;
sem_t semvalu;
pthread_mutex_t mutxvalu;
int h=0;
void *writer(void *wr)
{
sem_wait(&semvalu);
countval = countval * 4 + 1;
int c, d;
for (c = 1; c <= 32767; c++)
for (d = 1; d <= 32767; d++)
{}
printf("Writer %d modified countval to %d\n",(*((int *)wr)),countval);
printf("No of readers present are %d\n",h);
sem_post(&semvalu);
}
int g=6;
void *reader(void *rr)
{
// Reader acquire the lock before modifying numreader
pthread_mutex_lock(&mutxvalu);
valu++;
if(valu == 1) {
sem_wait(&semvalu); // If this id the first reader, then it will block the writer
}
pthread_mutex_unlock(&mutxvalu);
// Reading Section
int q,w;
for (q = 1; q <=32767; q++)
for (w = 1; w <= 32767; w++)
{ }
printf("Reader %d countval is %d\n",*((int *)rr),countval);
printf("No of readers present are %d\n",g);
g--;
// Reader acquire the lock before modifying numreader
pthread_mutex_lock(&mutxvalu);
valu--;
if(valu == 0) {
sem_post(&semvalu); // If this is the last reader, it will wake up the writer.
}
pthread_mutex_unlock(&mutxvalu);
}
int main()
{
pthread_t read[6],write[6];
pthread_mutex_init(&mutxvalu, NULL);
sem_init(&semvalu,0,1);
int a[6] = {1,2,3,4,5,6}; //Just used for numbering the producer and consumer
for(int k = 1; k <=6 ; k++) {
pthread_create(&read[k-1], NULL, (void *)reader, (void *)&a[k-1]);
}
for(int k = 1; k <= 6; k++) {
pthread_create(&write[k-1], NULL, (void *)writer, (void *)&a[k-1]);
}
for(int k = 1; k <= 6; k++) {
pthread_join(read[k-1], NULL);
}
for(int k = 1; k <= 6; k++) {
pthread_join(write[k-1], NULL);
}
pthread_mutex_destroy(&mutxvalu);
sem_destroy(&semvalu);
return 0;
}
//Please indent properly.
<?php
//program to find the common elements of the two array
//here we have to array A and B from which w have to find the common element
//first we sort then using merge sort and after then for traversing through
//the array in one iteration we can find the comman elements the given array
//this is an inspace algorithm meansno extra space is needed
//best case time complexity=O(nlogn)
//O(nlogn)-> for sorting
//O(n)-> for while loop to find comman element
//average case time complexity=O(nlogn)
//O(nlogn)-> for sorting
//O(n)-> for while loop to find comman element
//worst case time complexity =O(nlogn)
//O(nlogn)-> for sorting
//O(n)-> for while loop to find comman element
$A = array ( 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 36 , 58 , 27 , 48 ) ; $B = array ( 3 , 10 , 4 , 5 , 6 , 8 , 12 , 24 , 37 , 27 , 50 ) ; $counter1 = 0 ;
$counter2 = 0 ;
while ( ( $counter1 < $size1 ) && ( $counter2 ) < ( $size2 ) ) //traversing through the array
{
if ( $A [ $counter1 ] == $B [ $counter2 ] )
{
array_push ( $commonArray , $A [ $counter1 ] ) ; //to enter comman element in the output array $counter1 = $counter1 + 1 ;
$counter2 = $counter2 + 1 ;
}
else if ( $A [ $counter1 ] < $B [ $counter2 ] )
{
$counter1 = $counter1 + 1 ; }
else
{
$counter2 = $counter2 + 1 ;
}
}
print_r ( $commonArray ) ; //to print the output array ?>
Ly9FbnRlciB5b3UgY29kZSBoZXJlLgojaW5jbHVkZSA8cHRocmVhZC5oPgoKI2luY2x1ZGUgPHNlbWFwaG9yZS5oPgoKI2luY2x1ZGUgPHN0ZGlvLmg+CgoKCgoKaW50IGNvdW50dmFsID0gMzsKCmludCB2YWx1ID0gMDsKCnNlbV90IHNlbXZhbHU7CgpwdGhyZWFkX211dGV4X3QgbXV0eHZhbHU7CgoKCmludCBoPTA7Cgogdm9pZCAqd3JpdGVyKHZvaWQgKndyKQoKewoKICAgIHNlbV93YWl0KCZzZW12YWx1KTsKCiAgICBjb3VudHZhbCA9IGNvdW50dmFsICogNCArIDE7CgogICBpbnQgYywgZDsKCiAgIAoKICAgZm9yIChjID0gMTsgYyA8PSAzMjc2NzsgYysrKQoKICAgICAgIGZvciAoZCA9IDE7IGQgPD0gMzI3Njc7IGQrKykKCiAgICAgICB7fQoKICAgIHByaW50ZigiV3JpdGVyICVkIG1vZGlmaWVkIGNvdW50dmFsIHRvICVkXG4iLCgqKChpbnQgKil3cikpLGNvdW50dmFsKTsKCiAgICBwcmludGYoIk5vIG9mIHJlYWRlcnMgcHJlc2VudCBhcmUgJWRcbiIsaCk7ICAgCgogc2VtX3Bvc3QoJnNlbXZhbHUpOwoKfQoKCgppbnQgZz02OwoKdm9pZCAqcmVhZGVyKHZvaWQgKnJyKQoKewoKICAgIC8vIFJlYWRlciBhY3F1aXJlIHRoZSBsb2NrIGJlZm9yZSBtb2RpZnlpbmcgbnVtcmVhZGVyCgogICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXR4dmFsdSk7CgogICAgdmFsdSsrOwoKICAgIGlmKHZhbHUgPT0gMSkgewoKICAgICAgICBzZW1fd2FpdCgmc2VtdmFsdSk7IC8vIElmIHRoaXMgaWQgdGhlIGZpcnN0IHJlYWRlciwgdGhlbiBpdCB3aWxsIGJsb2NrIHRoZSB3cml0ZXIKCiAgICB9CgogICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dHh2YWx1KTsKCiAgICAvLyBSZWFkaW5nIFNlY3Rpb24KCiAgIGludCBxLHc7CgogICAKCiAgIGZvciAocSA9IDE7IHEgPD0zMjc2NzsgcSsrKQoKICAgICAgIGZvciAodyA9IDE7IHcgPD0gMzI3Njc7IHcrKykKCiAgICAgICAgeyB9CgoKCiAgICBwcmludGYoIlJlYWRlciAlZCBjb3VudHZhbCBpcyAlZFxuIiwqKChpbnQgKilyciksY291bnR2YWwpOwoKICAgIHByaW50ZigiTm8gb2YgcmVhZGVycyBwcmVzZW50IGFyZSAlZFxuIixnKTsKCgoKICAgIGctLTsKCiAgCgogICAKCiAgIAoKIC8vIFJlYWRlciBhY3F1aXJlIHRoZSBsb2NrIGJlZm9yZSBtb2RpZnlpbmcgbnVtcmVhZGVyCgogICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXR4dmFsdSk7CgogICAgdmFsdS0tOwoKCgoKCiBpZih2YWx1ID09IDApIHsKCiAgICAgICAgc2VtX3Bvc3QoJnNlbXZhbHUpOyAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IHJlYWRlciwgaXQgd2lsbCB3YWtlIHVwIHRoZSB3cml0ZXIuCgogICAgfQoKICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXR4dmFsdSk7Cgp9CgoKCgoKaW50IG1haW4oKQoKewoKCgogICAgcHRocmVhZF90IHJlYWRbNl0sd3JpdGVbNl07CgogICAgcHRocmVhZF9tdXRleF9pbml0KCZtdXR4dmFsdSwgTlVMTCk7CgogICAgc2VtX2luaXQoJnNlbXZhbHUsMCwxKTsKCgoKICAgIGludCBhWzZdID0gezEsMiwzLDQsNSw2fTsgLy9KdXN0IHVzZWQgZm9yIG51bWJlcmluZyB0aGUgcHJvZHVjZXIgYW5kIGNvbnN1bWVyCgoKCiAgICBmb3IoaW50IGsgPSAxOyBrIDw9NiAgOyBrKyspIHsKCiAgICAgICAgcHRocmVhZF9jcmVhdGUoJnJlYWRbay0xXSwgTlVMTCwgKHZvaWQgKilyZWFkZXIsICh2b2lkICopJmFbay0xXSk7CgogICAgfQoKICAKCiAgICBmb3IoaW50IGsgPSAxOyBrIDw9IDY7IGsrKykgewoKICAgICAgICBwdGhyZWFkX2NyZWF0ZSgmd3JpdGVbay0xXSwgTlVMTCwgKHZvaWQgKil3cml0ZXIsICh2b2lkICopJmFbay0xXSk7CgogICAgfQoKCgogICAKCiAgICBmb3IoaW50IGsgPSAxOyBrIDw9IDY7IGsrKykgewoKICAgICAgICBwdGhyZWFkX2pvaW4ocmVhZFtrLTFdLCBOVUxMKTsKCiAgICB9CgoKCiAgICBmb3IoaW50IGsgPSAxOyBrIDw9IDY7IGsrKykgewoKICAgICAgICBwdGhyZWFkX2pvaW4od3JpdGVbay0xXSwgTlVMTCk7CgogIH0KCiAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dHh2YWx1KTsKCiAgICBzZW1fZGVzdHJveSgmc2VtdmFsdSk7CgoKCiAgICByZXR1cm4gMDsKCn0KCgovL1BsZWFzZSBpbmRlbnQgcHJvcGVybHkuCgo8P3BocAovL3Byb2dyYW0gdG8gZmluZCB0aGUgY29tbW9uIGVsZW1lbnRzIG9mIHRoZSB0d28gYXJyYXkKLy9oZXJlIHdlIGhhdmUgdG8gYXJyYXkgQSBhbmQgQiBmcm9tIHdoaWNoIHcgaGF2ZSB0byBmaW5kIHRoZSBjb21tb24gZWxlbWVudAovL2ZpcnN0IHdlIHNvcnQgdGhlbiB1c2luZyBtZXJnZSBzb3J0IGFuZCBhZnRlciB0aGVuIGZvciB0cmF2ZXJzaW5nIHRocm91Z2gKLy90aGUgYXJyYXkgaW4gb25lIGl0ZXJhdGlvbiB3ZSBjYW4gZmluZCB0aGUgY29tbWFuIGVsZW1lbnRzIHRoZSBnaXZlbiBhcnJheQovL3RoaXMgaXMgYW4gaW5zcGFjZSBhbGdvcml0aG0gbWVhbnNubyBleHRyYSBzcGFjZSBpcyBuZWVkZWQKCi8vYmVzdCBjYXNlIHRpbWUgY29tcGxleGl0eT1PKG5sb2duKQovL08obmxvZ24pLT4gZm9yIHNvcnRpbmcKLy9PKG4pLT4gZm9yIHdoaWxlIGxvb3AgdG8gZmluZCBjb21tYW4gZWxlbWVudAoKLy9hdmVyYWdlIGNhc2UgdGltZSBjb21wbGV4aXR5PU8obmxvZ24pCi8vTyhubG9nbiktPiBmb3Igc29ydGluZwovL08obiktPiBmb3Igd2hpbGUgbG9vcCB0byBmaW5kIGNvbW1hbiBlbGVtZW50CiAgCi8vd29yc3QgY2FzZSB0aW1lIGNvbXBsZXhpdHkgPU8obmxvZ24pCi8vTyhubG9nbiktPiBmb3Igc29ydGluZwovL08obiktPiBmb3Igd2hpbGUgbG9vcCB0byBmaW5kIGNvbW1hbiBlbGVtZW50CiAgCgoKJGNvbW1vbkFycmF5PWFycmF5KCk7CiRBPWFycmF5KDMsNCw1LDYsNyw4LDksMTAsMzYsNTgsMjcsNDgpOwokQj1hcnJheSgzLDEwLDQsNSw2LDgsMTIsMjQsMzcsMjcsNTApOwpzb3J0KCRBKTsKc29ydCgkQik7CiRzaXplMT1zaXplb2YoJEEpOwokc2l6ZTI9c2l6ZW9mKCRCKTsKJGNvdW50ZXIxPTA7CiRjb3VudGVyMj0wOwp3aGlsZSgoJGNvdW50ZXIxPCAkc2l6ZTEpICYmICgkY291bnRlcjIpPCgkc2l6ZTIpKS8vdHJhdmVyc2luZyB0aHJvdWdoIHRoZSBhcnJheQp7CiAKaWYgKCRBWyRjb3VudGVyMV0gPT0gJEJbJGNvdW50ZXIyXSkKewogICAgICBhcnJheV9wdXNoKCRjb21tb25BcnJheSwkQVskY291bnRlcjFdKTsgIC8vdG8gZW50ZXIgY29tbWFuIGVsZW1lbnQgaW4gdGhlIG91dHB1dCBhcnJheSAKICAgICAgJGNvdW50ZXIxPSRjb3VudGVyMSsxOwogICAgICAkY291bnRlcjI9JGNvdW50ZXIyKzE7Cn0KICAgIGVsc2UgaWYgKCRBWyRjb3VudGVyMV0gPCAkQlskY291bnRlcjJdKQp7CiAgICAgJGNvdW50ZXIxPSRjb3VudGVyMSsxOyB9CiAKICAgIGVsc2UKewogICAgICRjb3VudGVyMj0kY291bnRlcjIrMTsKfQp9CiAKcHJpbnRfcigkY29tbW9uQXJyYXkpOy8vdG8gcHJpbnQgdGhlIG91dHB1dCBhcnJheQo/PgoK
stdout
//Enter you code here.
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
int countval = 3;
int valu = 0;
sem_t semvalu;
pthread_mutex_t mutxvalu;
int h=0;
void *writer(void *wr)
{
sem_wait(&semvalu);
countval = countval * 4 + 1;
int c, d;
for (c = 1; c <= 32767; c++)
for (d = 1; d <= 32767; d++)
{}
printf("Writer %d modified countval to %d\n",(*((int *)wr)),countval);
printf("No of readers present are %d\n",h);
sem_post(&semvalu);
}
int g=6;
void *reader(void *rr)
{
// Reader acquire the lock before modifying numreader
pthread_mutex_lock(&mutxvalu);
valu++;
if(valu == 1) {
sem_wait(&semvalu); // If this id the first reader, then it will block the writer
}
pthread_mutex_unlock(&mutxvalu);
// Reading Section
int q,w;
for (q = 1; q <=32767; q++)
for (w = 1; w <= 32767; w++)
{ }
printf("Reader %d countval is %d\n",*((int *)rr),countval);
printf("No of readers present are %d\n",g);
g--;
// Reader acquire the lock before modifying numreader
pthread_mutex_lock(&mutxvalu);
valu--;
if(valu == 0) {
sem_post(&semvalu); // If this is the last reader, it will wake up the writer.
}
pthread_mutex_unlock(&mutxvalu);
}
int main()
{
pthread_t read[6],write[6];
pthread_mutex_init(&mutxvalu, NULL);
sem_init(&semvalu,0,1);
int a[6] = {1,2,3,4,5,6}; //Just used for numbering the producer and consumer
for(int k = 1; k <=6 ; k++) {
pthread_create(&read[k-1], NULL, (void *)reader, (void *)&a[k-1]);
}
for(int k = 1; k <= 6; k++) {
pthread_create(&write[k-1], NULL, (void *)writer, (void *)&a[k-1]);
}
for(int k = 1; k <= 6; k++) {
pthread_join(read[k-1], NULL);
}
for(int k = 1; k <= 6; k++) {
pthread_join(write[k-1], NULL);
}
pthread_mutex_destroy(&mutxvalu);
sem_destroy(&semvalu);
return 0;
}
//Please indent properly.
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
[4] => 8
[5] => 10
[6] => 27
)