#include <stdio.h>
int main( ) {
int n, h, i, p[ 10 ] , choice;
printf ( "DINING PHILOSOPHER PROBLEM\n " ) ;
printf ( "Enter the total no. of philosophers: " ) ;
scanf ( "%d" , & n) ;
printf ( "How many are hungry: " ) ;
scanf ( "%d" , & h) ;
for ( i = 0 ; i < h; i++ ) {
printf ( "Enter philosopher %d position: " , i + 1 ) ;
scanf ( "%d" , & p[ i] ) ;
}
do {
printf ( "\n 1. One can eat at a time" ) ;
printf ( "\n 2. Two can eat at a time" ) ;
printf ( "\n 3. Exit" ) ;
printf ( "\n Enter your choice: " ) ;
scanf ( "%d" , & choice) ;
if ( choice == 1 ) {
for ( i = 0 ; i < h; i++ )
printf ( "P %d is granted to eat\n " , p[ i] ) ;
}
else if ( choice == 2 ) {
for ( i = 0 ; i < h; i++ ) {
if ( i + 1 < h &&
( p[ i] % n ! = p[ i + 1 ] % n) &&
( p[ i] % n ! = ( p[ i + 1 ] + 1 ) % n) &&
( p[ i] + 1 ) % n ! = p[ i + 1 ] % n) {
printf ( "P %d and P %d are granted to eat\n " ,
p[ i] , p[ i + 1 ] ) ;
}
}
}
else if ( choice ! = 3 ) {
printf ( "Invalid choice!\n " ) ;
}
} while ( choice ! = 3 ) ;
return 0 ;
}
CiNpbmNsdWRlIDxzdGRpby5oPgoKaW50IG1haW4oKSB7CiAgICBpbnQgbiwgaCwgaSwgcFsxMF0sIGNob2ljZTsKCiAgICBwcmludGYoIkRJTklORyBQSElMT1NPUEhFUiBQUk9CTEVNXG4iKTsKICAgIHByaW50ZigiRW50ZXIgdGhlIHRvdGFsIG5vLiBvZiBwaGlsb3NvcGhlcnM6ICIpOwogICAgc2NhbmYoIiVkIiwgJm4pOwoKICAgIHByaW50ZigiSG93IG1hbnkgYXJlIGh1bmdyeTogIik7CiAgICBzY2FuZigiJWQiLCAmaCk7CgogICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewogICAgICAgIHByaW50ZigiRW50ZXIgcGhpbG9zb3BoZXIgJWQgcG9zaXRpb246ICIsIGkgKyAxKTsKICAgICAgICBzY2FuZigiJWQiLCAmcFtpXSk7CiAgICB9CgogICAgZG8gewogICAgICAgIHByaW50ZigiXG4xLiBPbmUgY2FuIGVhdCBhdCBhIHRpbWUiKTsKICAgICAgICBwcmludGYoIlxuMi4gVHdvIGNhbiBlYXQgYXQgYSB0aW1lIik7CiAgICAgICAgcHJpbnRmKCJcbjMuIEV4aXQiKTsKICAgICAgICBwcmludGYoIlxuRW50ZXIgeW91ciBjaG9pY2U6ICIpOwogICAgICAgIHNjYW5mKCIlZCIsICZjaG9pY2UpOwoKICAgICAgICBpZiAoY2hvaWNlID09IDEpIHsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykKICAgICAgICAgICAgICAgIHByaW50ZigiUCAlZCBpcyBncmFudGVkIHRvIGVhdFxuIiwgcFtpXSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNob2ljZSA9PSAyKSB7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IGggJiYKICAgICAgICAgICAgICAgICAgICAocFtpXSAlIG4gIT0gcFtpICsgMV0gJSBuKSAmJgogICAgICAgICAgICAgICAgICAgIChwW2ldICUgbiAhPSAocFtpICsgMV0gKyAxKSAlIG4pICYmCiAgICAgICAgICAgICAgICAgICAgKHBbaV0gKyAxKSAlIG4gIT0gcFtpICsgMV0gJSBuKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJQICVkIGFuZCBQICVkIGFyZSBncmFudGVkIHRvIGVhdFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtpXSwgcFtpICsgMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNob2ljZSAhPSAzKSB7CiAgICAgICAgICAgIHByaW50ZigiSW52YWxpZCBjaG9pY2UhXG4iKTsKICAgICAgICB9CgogICAgfSB3aGlsZSAoY2hvaWNlICE9IDMpOwoKICAgIHJldHVybiAwOwp9Cg==