Untitled

 avatar
unknown
c_cpp
4 years ago
1.4 kB
5
Indexable
void next(Queue *Q) {
    enQueue(front(*Q), Q);
    deQueue(Q);
}

void update(ElementType x, Queue *Q) {
    Q->Elements[Q->Front] = x;
}

int avgWaitingTime(int cusQty, int ctrQty, int transTime, int comeTime) {
    int i;
    int totalTime = 0;
    Queue cusQ, ctrQ;
    makenullQueue(&cusQ);
    makenullQueue(&ctrQ);
    for (i = 1; i <= cusQty;i++)
        enQueue(i * comeTime, &cusQ);
    for (i = 1; i <= ctrQty; i++)
        enQueue(0, &ctrQ);
    
    while(!emptyQueue(cusQ)) {
        if(front(ctrQ) == 0)
            update(front(cusQ), &ctrQ);
        update(front(ctrQ) + transTime, &ctrQ);
        totalTime += front(ctrQ) - front(cusQ);

        next(&ctrQ);
        deQueue(&cusQ);
    }

    return totalTime / cusQty;
}

int main()
{
    int cusQty, maxCtrQty, transTime, comeTime, X;
    scanf("%d%d%d%d%d", &cusQty, &maxCtrQty, &transTime, &comeTime, &X);
    int avgTime;
    int ctrQty = 0;
    do {
        ctrQty++;
        avgTime = avgWaitingTime(cusQty, ctrQty, transTime, comeTime);
        printf("So quay: %d; Thoi gian cho trung binh: %d.0\n", ctrQty, avgTime);
    } while (avgTime > X && ctrQty < maxCtrQty);
    if(avgTime>X)
        printf("Voi %d quay hien co, khach phai cho it nhat %d.0 giay moi duoc phuc vu.", maxCtrQty, avgTime);
    else
        printf("=> Sieu thi se mo %d quay", ctrQty);
    return 0;
}
Editor is loading...