#include <stdio.h>
 
int main() {
    char process[5][3] = {"P1", "P2", "P3", "P4", "P5"};
    int arrival[5] = {3, 5, 0, 5, 4};
    int burst[5] = {4, 3, 2, 1, 3};
    int waiting[5], turnaround[5];
    int start[5], finish[5];
    int n = 5, i, j, temp;
    float totalWT = 0, totalTAT = 0;
 
    // Sort according to arrival time
    for (i = 0; i < n - 1; i++) {
        for (j = i + 1; j < n; j++) {
            if (arrival[i] > arrival[j]) {
                temp = arrival[i]; arrival[i] = arrival[j]; arrival[j] = temp;
                temp = burst[i]; burst[i] = burst[j]; burst[j] = temp;
                char t[3]; 
                sprintf(process
[i
], "%s", process
[j
]);              }
        }
    }
 
    int currentTime = 0;
 
    for (i = 0; i < n; i++) {
        if (currentTime < arrival[i])
            currentTime = arrival[i];
 
        start[i] = currentTime;
        finish[i] = start[i] + burst[i];
        turnaround[i] = finish[i] - arrival[i];
        waiting[i] = turnaround[i] - burst[i];
 
        totalWT += waiting[i];
        totalTAT += turnaround[i];
 
        currentTime = finish[i];
    }
 
    printf("\n--- FCFS Scheduling ---\n");     printf("Process\tAT\tBT\tWT\tTAT\n");     for (i = 0; i < n; i++) {
        printf("%s\t%d\t%d\t%d\t%d\n",                process[i], arrival[i], burst[i], waiting[i], turnaround[i]);
    }
 
    printf("\nAverage Waiting Time = %.2f", totalWT 
/ n
);     printf("\nAverage Turnaround Time = %.2f\n", totalTAT 
/ n
);  
    return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGNoYXIgcHJvY2Vzc1s1XVszXSA9IHsiUDEiLCAiUDIiLCAiUDMiLCAiUDQiLCAiUDUifTsKICAgIGludCBhcnJpdmFsWzVdID0gezMsIDUsIDAsIDUsIDR9OwogICAgaW50IGJ1cnN0WzVdID0gezQsIDMsIDIsIDEsIDN9OwogICAgaW50IHdhaXRpbmdbNV0sIHR1cm5hcm91bmRbNV07CiAgICBpbnQgc3RhcnRbNV0sIGZpbmlzaFs1XTsKICAgIGludCBuID0gNSwgaSwgaiwgdGVtcDsKICAgIGZsb2F0IHRvdGFsV1QgPSAwLCB0b3RhbFRBVCA9IDA7CgogICAgLy8gU29ydCBhY2NvcmRpbmcgdG8gYXJyaXZhbCB0aW1lCiAgICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGlmIChhcnJpdmFsW2ldID4gYXJyaXZhbFtqXSkgewogICAgICAgICAgICAgICAgdGVtcCA9IGFycml2YWxbaV07IGFycml2YWxbaV0gPSBhcnJpdmFsW2pdOyBhcnJpdmFsW2pdID0gdGVtcDsKICAgICAgICAgICAgICAgIHRlbXAgPSBidXJzdFtpXTsgYnVyc3RbaV0gPSBidXJzdFtqXTsgYnVyc3Rbal0gPSB0ZW1wOwogICAgICAgICAgICAgICAgY2hhciB0WzNdOyAKICAgICAgICAgICAgICAgIHNwcmludGYodCwgIiVzIiwgcHJvY2Vzc1tpXSk7IAogICAgICAgICAgICAgICAgc3ByaW50Zihwcm9jZXNzW2ldLCAiJXMiLCBwcm9jZXNzW2pdKTsgCiAgICAgICAgICAgICAgICBzcHJpbnRmKHByb2Nlc3Nbal0sICIlcyIsIHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGludCBjdXJyZW50VGltZSA9IDA7CgogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChjdXJyZW50VGltZSA8IGFycml2YWxbaV0pCiAgICAgICAgICAgIGN1cnJlbnRUaW1lID0gYXJyaXZhbFtpXTsKCiAgICAgICAgc3RhcnRbaV0gPSBjdXJyZW50VGltZTsKICAgICAgICBmaW5pc2hbaV0gPSBzdGFydFtpXSArIGJ1cnN0W2ldOwogICAgICAgIHR1cm5hcm91bmRbaV0gPSBmaW5pc2hbaV0gLSBhcnJpdmFsW2ldOwogICAgICAgIHdhaXRpbmdbaV0gPSB0dXJuYXJvdW5kW2ldIC0gYnVyc3RbaV07CgogICAgICAgIHRvdGFsV1QgKz0gd2FpdGluZ1tpXTsKICAgICAgICB0b3RhbFRBVCArPSB0dXJuYXJvdW5kW2ldOwoKICAgICAgICBjdXJyZW50VGltZSA9IGZpbmlzaFtpXTsKICAgIH0KCiAgICBwcmludGYoIlxuLS0tIEZDRlMgU2NoZWR1bGluZyAtLS1cbiIpOwogICAgcHJpbnRmKCJQcm9jZXNzXHRBVFx0QlRcdFdUXHRUQVRcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50ZigiJXNcdCVkXHQlZFx0JWRcdCVkXG4iLAogICAgICAgICAgICAgICBwcm9jZXNzW2ldLCBhcnJpdmFsW2ldLCBidXJzdFtpXSwgd2FpdGluZ1tpXSwgdHVybmFyb3VuZFtpXSk7CiAgICB9CgogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgV2FpdGluZyBUaW1lID0gJS4yZiIsIHRvdGFsV1QgLyBuKTsKICAgIHByaW50ZigiXG5BdmVyYWdlIFR1cm5hcm91bmQgVGltZSA9ICUuMmZcbiIsIHRvdGFsVEFUIC8gbik7CgogICAgcmV0dXJuIDA7Cn0K