bankers

                Never    
Text
       
#include <stdio.h>

int main() {
    printf("Enter the number of processes and resources: ");
    int n, m, i, j, k;
    scanf("%d %d", &n, &m);

    int allock[n][m], max[n][m], avail[m];
    printf("Enter the allocation matrix: ");
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            scanf("%d", &allock[i][j]);

    printf("Enter the maximum matrix: ");
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            scanf("%d", &max[i][j]);

    printf("Enter available resources: ");
    for (i = 0; i < m; i++)
        scanf("%d", &avail[i]);

    int f[n], ans[n], ind = 0;
    for (k = 0; k < n; k++)
        f[k] = 0;

    int need[n][m];
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
            need[i][j] = max[i][j] - allock[i][j];

    int y = 0;
    for (k = 0; k < n; k++) {
        for (i = 0; i < n; i++) {
            if (f[i] == 0) {
                int flag = 0;
                for (j = 0; j < m; j++) {
                    if (need[i][j] > avail[j]) {
                        flag = 1;
                        break;
                    }
                }
                if (flag == 0) {
                    ans[ind++] = i;
                    for (y = 0; y < m; y++)
                        avail[y] += allock[i][y];
                    f[i] = 1;
                }
            }
        }
    }

    int safe_flag = 1;
    for (i = 0; i < n; i++) {
        if (f[i] == 0) {
            safe_flag = 0;
            printf("The system is not safe.\n");
            break;
        }
    }

    if (safe_flag == 1) {
        printf("Safe sequence: ");
        for (i = 0; i < n - 1; i++)
            printf("p%d -> ", ans[i]);
        printf("p%d\n", ans[n - 1]);
    }

    return 0;
}

Raw Text