fork download
  1. #include <stdlib.h>
  2. #include <stdbool.h>
  3. #include <stdio.h>
  4.  
  5. typedef struct queueNode_t {
  6. int data;
  7. struct queueNode_t *next;
  8. } QueueNode;
  9.  
  10. typedef struct queue_t {
  11. QueueNode *_front,
  12. *_rear;
  13. unsigned _size;
  14. } Queue;
  15.  
  16. void queue_init(Queue *queue);
  17. bool queue_isEmpty(Queue *queue);
  18. void queue_push(Queue *queue, int value);
  19. void queue_pop(Queue *queue);
  20. int queue_front(Queue *queue);
  21. int queue_size(Queue *queue);
  22.  
  23. void queue_init(Queue *queue)
  24. {
  25. queue->_size = 0;
  26. queue->_front = NULL;
  27. queue->_rear = NULL;
  28. }
  29.  
  30. bool queue_isEmpty(Queue *queue) {
  31. return (queue->_front == NULL && queue->_rear == NULL);
  32. }
  33.  
  34. void queue_push(Queue *queue, int value)
  35. {
  36. QueueNode *newNode = (QueueNode*) malloc(sizeof(QueueNode));
  37. if (newNode) {
  38. queue->_size++;
  39. newNode->data = value;
  40. newNode->next = NULL;
  41.  
  42. if (queue_isEmpty(queue))
  43. queue->_front = queue->_rear = newNode;
  44. else {
  45. queue->_rear->next = newNode;
  46. queue->_rear = newNode;
  47. }
  48. }
  49. }
  50.  
  51. void queue_pop(Queue *queue)
  52. {
  53. if (!queue_isEmpty(queue)) {
  54. QueueNode *temp = queue->_front;
  55. queue->_front = queue->_front->next;
  56. free(temp);
  57.  
  58. if (queue->_front == NULL)
  59. queue->_rear = NULL;
  60. queue->_size--;
  61. }
  62. }
  63.  
  64. int queue_front(Queue *queue)
  65. {
  66. if (!queue_isEmpty(queue)) {
  67. return (queue->_front->data);
  68. }
  69. return (int)0;
  70. }
  71.  
  72. int queue_size(Queue *queue) {
  73. return queue->_size;
  74. }
  75.  
  76. int main(int argc, char const *argv[])
  77. {
  78. int x, y, z; scanf("%d %d %d", &x, &y, &z);
  79. Queue q;
  80. queue_init(&q);
  81. for (int i = 0; i < x; i++) {
  82. int t; scanf("%d", &t);
  83. queue_push(&q, t);
  84. }
  85. int cnt = 0, ans = 0;
  86. while (!queue_isEmpty(&q)) {
  87. cnt++;
  88. int cur = queue_front(&q);
  89. queue_pop(&q);
  90. if (cnt % z == 0) {
  91. queue_push(&q, cur);
  92. ans++;
  93. } else {
  94. y -= cur;
  95. }
  96. if (y <= 0) break;
  97. }
  98. printf("%d ", ans);
  99. if (queue_isEmpty(&q)) {
  100. puts("Yes Dapat burger gratis!!!");
  101. } else {
  102. puts("NOO tidak Dapat :(");
  103. }
  104. return 0;
  105. }
  106.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
0 Yes Dapat burger gratis!!!