Submission #77217541
Source Code Expand
Copy
#include <stdio.h>#include <stdlib.h>struct q_s {int qsize;int q[212345 * 2];int (*cmp)(int, int);};void qadjust(struct q_s* q, int pos) {for (;;) {int i;int minpos = pos;for (i = 1; i <= 2; i++) {int c = pos * 2 + i;if (c < q->qsize && q->cmp(q->q[minpos], q->q[c]) > 0) minpos = c;}if (minpos == pos) {if (pos == 0) return;pos = (pos - 1) / 2;} else {int temp = q->q[pos];q->q[pos] = q->q[minpos];q->q[minpos] = temp;pos = minpos;}}}void qadd(struct q_s* q, int value) {q->q[q->qsize++] = value;qadjust(q, q->qsize - 1);}int qpeek(struct q_s* q) {if (q->qsize <= 0) exit(72);return q->q[0];}int qget(struct q_s* q) {int res;
#include <stdio.h>
#include <stdlib.h>
struct q_s {
int qsize;
int q[212345 * 2];
int (*cmp)(int, int);
};
void qadjust(struct q_s* q, int pos) {
for (;;) {
int i;
int minpos = pos;
for (i = 1; i <= 2; i++) {
int c = pos * 2 + i;
if (c < q->qsize && q->cmp(q->q[minpos], q->q[c]) > 0) minpos = c;
}
if (minpos == pos) {
if (pos == 0) return;
pos = (pos - 1) / 2;
} else {
int temp = q->q[pos];
q->q[pos] = q->q[minpos];
q->q[minpos] = temp;
pos = minpos;
}
}
}
void qadd(struct q_s* q, int value) {
q->q[q->qsize++] = value;
qadjust(q, q->qsize - 1);
}
int qpeek(struct q_s* q) {
if (q->qsize <= 0) exit(72);
return q->q[0];
}
int qget(struct q_s* q) {
int res;
if (q->qsize <= 0) exit(72);
res = q->q[0];
if (--q->qsize > 0) {
q->q[0] = q->q[q->qsize];
qadjust(q, 0);
}
return res;
}
int qsize(struct q_s* q) {
return q->qsize;
}
int normal_cmp(int a, int b) {
return (a > b) - (a < b);
}
int reverse_cmp(int a, int b) {
return (a < b) - (a > b);
}
struct q_s lq = { .cmp = reverse_cmp }, gq = { .cmp = normal_cmp };
int main(void) {
int X;
int Q;
int i;
if (scanf("%d", &X) != 1) return 1;
if (scanf("%d", &Q) != 1) return 1;
qadd(&lq, X);
for (i = 0; i < Q; i++) {
int A, B;
if (scanf("%d%d", &A, &B) != 2) return 1;
if (qpeek(&lq) > A) qadd(&lq, A); else qadd(&gq, A);
if (qpeek(&lq) > B) qadd(&lq, B); else qadd(&gq, B);
while (qsize(&lq) > qsize(&gq) + 1) qadd(&gq, qget(&lq));
while (qsize(&lq) < qsize(&gq) + 1) qadd(&lq, qget(&gq));
printf("%d\n", qpeek(&lq));
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Chalkboard Median |
| User | mikecat |
| Language | C23 (GCC 14.2.0) |
| Score | 400 |
| Code Size | 1659 Byte |
| Status | AC |
| Exec Time | 150 ms |
| Memory | 4016 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 0 ms | 1660 KiB |
| 00_sample_01.txt | AC | 0 ms | 1768 KiB |
| 00_sample_02.txt | AC | 0 ms | 1600 KiB |
| 01_random_00.txt | AC | 99 ms | 3292 KiB |
| 01_random_01.txt | AC | 57 ms | 4012 KiB |
| 01_random_02.txt | AC | 94 ms | 3492 KiB |
| 01_random_03.txt | AC | 142 ms | 3752 KiB |
| 01_random_04.txt | AC | 138 ms | 4008 KiB |
| 01_random_05.txt | AC | 75 ms | 4012 KiB |
| 01_random_06.txt | AC | 70 ms | 2728 KiB |
| 01_random_07.txt | AC | 109 ms | 4008 KiB |
| 01_random_08.txt | AC | 60 ms | 2552 KiB |
| 01_random_09.txt | AC | 109 ms | 4008 KiB |
| 01_random_10.txt | AC | 44 ms | 2112 KiB |
| 01_random_11.txt | AC | 110 ms | 4012 KiB |
| 01_random_12.txt | AC | 136 ms | 3332 KiB |
| 01_random_13.txt | AC | 133 ms | 3304 KiB |
| 01_random_14.txt | AC | 143 ms | 4008 KiB |
| 01_random_15.txt | AC | 147 ms | 4012 KiB |
| 01_random_16.txt | AC | 149 ms | 4008 KiB |
| 01_random_17.txt | AC | 150 ms | 4004 KiB |
| 01_random_18.txt | AC | 129 ms | 4016 KiB |
| 01_random_19.txt | AC | 128 ms | 4004 KiB |
| 01_random_20.txt | AC | 150 ms | 4012 KiB |
| 01_random_21.txt | AC | 149 ms | 4012 KiB |