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;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#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
AC × 3
AC × 25
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


2026-07-05 (Sun)
02:58:51 +09:00