Submission #72843235


Source Code Expand

Copy
#include <stdio.h>
#include <stdlib.h>
int cmp(const void* x, const void* y) {
int a = *(const int*)x, b = *(const int*)y;
return (a > b) - (a < b);
}
int zac;
int zal[1024 * 4];
int zaq(int query) {
int l = 0, r = zac - 1;
while (l <= r) {
int m = l + (r - l) / 2;
if (zal[m] == query) return m;
else if (zal[m] < query) l = m + 1;
else r = m - 1;
}
printf("ERROR: %d not found!\n", query);
exit(72);
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <stdlib.h>

int cmp(const void* x, const void* y) {
	int a = *(const int*)x, b = *(const int*)y;
	return (a > b) - (a < b);
}

int zac;
int zal[1024 * 4];

int zaq(int query) {
	int l = 0, r = zac - 1;
	while (l <= r) {
		int m = l + (r - l) / 2;
		if (zal[m] == query) return m;
		else if (zal[m] < query) l = m + 1;
		else r = m - 1;
	}
	printf("ERROR: %d not found!\n", query);
	exit(72);
}

int w, h;
int n;
int x1[1024], y1[1024], x2[1024], y2[1024];

int wp, hp;

short maste[4096][4096];

struct yx_s {
	short y, x;
} q[4096 * 4096];

const int d[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};

void nuru(int y, int x) {
	int i;
	int qs = 0, qe = 1;
	q[0] = (struct yx_s){ (short)y, (short)x };
	while (qs < qe) {
		struct yx_s cur = q[qs++];
		for (i = 0; i < 4; i++) {
			int ny = cur.y + d[i][0], nx = cur.x + d[i][1];
			if (0 <= ny && ny < hp && 0 <= nx  && nx < wp && maste[ny][nx] == 0) {
				maste[ny][nx] = -1;
				q[qe++] = (struct yx_s){ (short)ny, (short)nx };
			}
		}
	}
}

int main(void) {
	int i, j;
	int ans = 0;
	if (scanf("%d%d", &w, &h) != 2 ) return 1;
	if (scanf("%d", &n) != 1) return 1;
	for (i = 0; i < n; i++) {
		if (scanf("%d%d%d%d", &x1[i], &y1[i], &x2[i], &y2[i]) != 4) return 1;
		zal[i * 4 + 0] = x1[i];
		zal[i * 4 + 1] = y1[i];
		zal[i * 4 + 2] = x2[i];
		zal[i * 4 + 3] = y2[i];
	}
	zal[n * 4] = 0;
	zal[n * 4 + 1] = w;
	zal[n * 4 + 2] = h;
	qsort(zal, n * 4 + 3, sizeof(*zal), cmp);
	for (i = 1, zac = 1; i < n * 4 + 3; i++) {
		if (zal[zac - 1] != zal[i]) zal[zac++] = zal[i];
	}
	wp = zaq(w);
	hp = zaq(h);
	for (i = 0; i < n; i++) {
		int x1p = zaq(x1[i]), y1p = zaq(y1[i]), x2p = zaq(x2[i]), y2p = zaq(y2[i]);
		maste[y1p][x1p]++;
		maste[y1p][x2p]--;
		maste[y2p][x1p]--;
		maste[y2p][x2p]++;
	}
	for (i = 0; i < zac; i++) {
		for (j = 1; j < zac; j++) maste[i][j] += maste[i][j - 1];
	}
	for (j = 0; j < zac; j++) {
		for (i = 1; i < zac; i++) maste[i][j] += maste[i - 1][j];
	}
	for (i = 0; i < hp; i++) {
		for (j = 0; j < wp; j++) {
			if (maste[i][j] == 0) {
				nuru(i, j);
				ans++;
			}
		}
	}
	printf("%d\n", ans);
	return 0;
}

Submission Info

Submission Time
Task E - ペンキの色
User mikecat
Language C23 (GCC 14.2.0)
Score 20
Code Size 2209 Byte
Status AC
Exec Time 212 ms
Memory 52544 KiB

Judge Result

Set Name set01 set02 set03 set04 set05 set06 set07 set08 set09 set10 set11 set12 set13 set14 set15 set16 set17 set18 set19 set20
Score / Max Score 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1 1 / 1
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
set06 data6
set07 data7
set08 data8
set09 data9
set10 data10
set11 data11
set12 data12
set13 data13
set14 data14
set15 data15
set16 data16
set17 data17
set18 data18
set19 data19
set20 data20
Case Name Status Exec Time Memory
data1 AC 1 ms 1940 KiB
data10 AC 16 ms 7988 KiB
data11 AC 40 ms 9876 KiB
data12 AC 46 ms 11596 KiB
data13 AC 48 ms 11796 KiB
data14 AC 60 ms 16588 KiB
data15 AC 63 ms 17824 KiB
data16 AC 37 ms 9648 KiB
data17 AC 96 ms 29280 KiB
data18 AC 147 ms 41364 KiB
data19 AC 212 ms 52544 KiB
data2 AC 1 ms 1888 KiB
data20 AC 43 ms 11556 KiB
data3 AC 1 ms 1828 KiB
data4 AC 0 ms 1812 KiB
data5 AC 1 ms 1740 KiB
data6 AC 1 ms 1828 KiB
data7 AC 2 ms 3364 KiB
data8 AC 2 ms 3144 KiB
data9 AC 15 ms 6948 KiB


2026-01-31 (Sat)
00:40:13 +09:00