#include <stdio.h>
#include <stdlib.h>
typedef struct {
int time;
int score;
} Place;
typedef struct {
Place *places;
int size;
int capacity;
} PriorityQueue;
PriorityQueue* createQueue(int capacity) {
PriorityQueue* queue = (PriorityQueue*)malloc(sizeof(PriorityQueue));
queue->places = (Place*)malloc(sizeof(Place) * capacity);
queue->capacity = capacity;
queue->size = 0;
return queue;
}
void enqueue(PriorityQueue* queue, int time, int score) {
if (queue->size == queue->capacity) {
printf("Priority Queue is full.\n");
return;
}
queue->places[queue->size].time = time;
queue->places[queue->size].score = score;
queue->size++;
}
Place dequeue(PriorityQueue* queue) {
if (queue->size == 0) {
printf("Priority Queue is empty.\n");
return (Place){0};
}
Place maxPlace = queue->places[0];
queue->places[0] = queue->places[queue->size - 1];
queue->size--;
return maxPlace;
}
int main() {
PriorityQueue* queue = createQueue(4);
enqueue(queue, 1, 7);
enqueue(queue, 2, 8);
enqueue(queue, 3, 9);
enqueue(queue, 1, 6);
Place place;
while (queue->size > 0) {
place = dequeue(queue);
printf("Place: %d days, %d score. Weight: %d\n", place.time, place.score, place.time * place.score);
}
return 0;
}