Professional Documents
Culture Documents
7A
7A
7A
h>
#include <stdlib.h>
queue* create_queue() {
queue* q = (queue*) malloc(sizeof(queue));
q->front = q->rear = NULL;
return q;
}
int dequeue(queue* q) {
if (q->front == NULL) {
return -1;
}
int data = q->front->data;
node* temp = q->front;
q->front = q->front->next;
if (q->front == NULL) {
q->rear = NULL;
}
free(temp);
return data;
}
int main() {
int n, k, i;
while(scanf("%d %d", &n, &k) == 2) {
if(n == 0 && k == 0) {
break;
}
queue* q = create_queue();
for(i = 1; i <= n; i++) {
enqueue(q, i);
}
int cnt[26] = { 0 }, m = 1, tk = 1, tn;
while(q->front != NULL) {
tn = dequeue(q);
if(40-cnt[tn] >= m) {
cnt[tn] += m;
m = 0;
} else {
m -= 40-cnt[tn];
cnt[tn] = 40;
}
if(m == 0) {
tk++;
if(tk > k) {
tk = 1;
}
m += tk;
}
if(cnt[tn] < 40) {
enqueue(q, tn);
} else {
printf("%3d", tn);
}
}
puts("");
free(q);
}
return 0;
}