#include <stdio.h>
int main( ) {
int n, m, i, j, k;
printf ( "Enter number of processes: " ) ;
printf ( "Enter number of resource types: " ) ;
int alloc[ n] [ m] , max[ n] [ m] , need[ n] [ m] ;
int avail[ m] , finish[ n] , safe[ n] ;
printf ( "\n Enter Allocation Matrix:\n " ) ; for ( i = 0 ; i < n; i++ ) {
for ( j = 0 ; j < m; j++ ) {
scanf ( "%d" , & alloc
[ i
] [ j
] ) ; }
}
printf ( "\n Enter Max Matrix:\n " ) ; for ( i = 0 ; i < n; i++ ) {
for ( j = 0 ; j < m; j++ ) {
}
}
printf ( "\n Enter Available Resources:\n " ) ; for ( j = 0 ; j < m; j++ ) {
}
for ( i = 0 ; i < n; i++ ) {
for ( j = 0 ; j < m; j++ ) {
need[ i] [ j] = max[ i] [ j] - alloc[ i] [ j] ;
}
finish[ i] = 0 ;
}
int count = 0 ;
while ( count < n) {
int found = 0 ;
for ( i = 0 ; i < n; i++ ) {
if ( finish[ i] == 0 ) {
for ( j = 0 ; j < m; j++ ) {
if ( need[ i] [ j] > avail[ j] )
break ;
}
if ( j == m) {
for ( k = 0 ; k < m; k++ )
avail[ k] += alloc[ i] [ k] ;
safe[ count++ ] = i;
finish[ i] = 1 ;
found = 1 ;
}
}
}
if ( found == 0 ) {
printf ( "\n System is NOT in safe state.\n " ) ; return 0 ;
}
}
printf ( "\n System is in SAFE state.\n Safe sequence is:\n " ) ; for ( i = 0 ; i < n; i++ ) {
}
return 0 ;
}
CiNpbmNsdWRlIDxzdGRpby5oPgoKaW50IG1haW4oKSB7CiAgICBpbnQgbiwgbSwgaSwgaiwgazsKCiAgICAKICAgIHByaW50ZigiRW50ZXIgbnVtYmVyIG9mIHByb2Nlc3NlczogIik7CiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgcHJpbnRmKCJFbnRlciBudW1iZXIgb2YgcmVzb3VyY2UgdHlwZXM6ICIpOwogICAgc2NhbmYoIiVkIiwgJm0pOwoKICAgIGludCBhbGxvY1tuXVttXSwgbWF4W25dW21dLCBuZWVkW25dW21dOwogICAgaW50IGF2YWlsW21dLCBmaW5pc2hbbl0sIHNhZmVbbl07CgogICAgCiAgICBwcmludGYoIlxuRW50ZXIgQWxsb2NhdGlvbiBNYXRyaXg6XG4iKTsKICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGZvcihqID0gMDsgaiA8IG07IGorKykgewogICAgICAgICAgICBzY2FuZigiJWQiLCAmYWxsb2NbaV1bal0pOwogICAgICAgIH0KICAgIH0KCiAgICBwcmludGYoIlxuRW50ZXIgTWF4IE1hdHJpeDpcbiIpOwogICAgZm9yKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZm9yKGogPSAwOyBqIDwgbTsgaisrKSB7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsICZtYXhbaV1bal0pOwogICAgICAgIH0KICAgIH0KCiAgIAogICAgcHJpbnRmKCJcbkVudGVyIEF2YWlsYWJsZSBSZXNvdXJjZXM6XG4iKTsKICAgIGZvcihqID0gMDsgaiA8IG07IGorKykgewogICAgICAgIHNjYW5mKCIlZCIsICZhdmFpbFtqXSk7CiAgICB9CgogICAgCiAgICBmb3IoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBmb3IoaiA9IDA7IGogPCBtOyBqKyspIHsKICAgICAgICAgICAgbmVlZFtpXVtqXSA9IG1heFtpXVtqXSAtIGFsbG9jW2ldW2pdOwogICAgICAgIH0KICAgICAgICBmaW5pc2hbaV0gPSAwOwogICAgfQoKCiAgICBpbnQgY291bnQgPSAwOwogICAgd2hpbGUoY291bnQgPCBuKSB7CiAgICAgICAgaW50IGZvdW5kID0gMDsKICAgICAgICBmb3IoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaWYoZmluaXNoW2ldID09IDApIHsKICAgICAgICAgICAgICAgIGZvcihqID0gMDsgaiA8IG07IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmKG5lZWRbaV1bal0gPiBhdmFpbFtqXSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYoaiA9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yKGsgPSAwOyBrIDwgbTsgaysrKQogICAgICAgICAgICAgICAgICAgICAgICBhdmFpbFtrXSArPSBhbGxvY1tpXVtrXTsKCiAgICAgICAgICAgICAgICAgICAgc2FmZVtjb3VudCsrXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgZmluaXNoW2ldID0gMTsKICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKGZvdW5kID09IDApIHsKICAgICAgICAgICAgcHJpbnRmKCJcblN5c3RlbSBpcyBOT1QgaW4gc2FmZSBzdGF0ZS5cbiIpOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CgogICAKICAgIHByaW50ZigiXG5TeXN0ZW0gaXMgaW4gU0FGRSBzdGF0ZS5cblNhZmUgc2VxdWVuY2UgaXM6XG4iKTsKICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50ZigiUCVkICIsIHNhZmVbaV0pOwogICAgfQoKICAgIHJldHVybiAwOwp9