Submission #670023

#TimeUsernameProblemLanguageResultExecution timeMemory
670023rainboy함박 스테이크 (JOI20_hamburg)C11
21 / 100
3051 ms11088 KiB
#include <stdio.h>
#include <stdlib.h>

#define N	200000
#define INF	0x3f3f3f3f

int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }

int xx1[N], xx2[N], yy1[N], yy2[N], xx[N], yy[N], n;

int pierced(int i, int k) {
	int h;

	for (h = 0; h < k; h++)
		if (xx1[i] <= xx[h] && xx[h] <= xx2[i] && yy1[i] <= yy[h] && yy[h] <= yy2[i])
			return 1;
	return 0;
}

void solve(int k_, int k) {
	int h, i, x1, x2, y1, y2;

	x1 = INF, x2 = -1, y1 = INF, y2 = -1;
	for (i = 0; i < n; i++)
		if (!pierced(i, k_)) {
			x1 = min(x1, xx2[i]), x2 = max(x2, xx1[i]);
			y1 = min(y1, yy2[i]), y2 = max(y2, yy1[i]);
		}
	if (x1 == INF) {
		for (h = k_; h < k; h++)
			xx[h] = 1, yy[h] = 1;
		for (h = 0; h < k; h++)
			printf("%d %d\n", xx[h], yy[h]);
		exit(0);
	} else if (k_ < k) {
		if (k - k_ == 1)
			xx[k_] = x1, yy[k_] = y1, solve(k_ + 1, k);
		else if (k - k_ < 4) {
			xx[k_] = x1, yy[k_] = y1, solve(k_ + 1, k);
			xx[k_] = x1, yy[k_] = y2, solve(k_ + 1, k);
			xx[k_] = x2, yy[k_] = y1, solve(k_ + 1, k);
			xx[k_] = x2, yy[k_] = y2, solve(k_ + 1, k);
		} else {
			for (i = 0; i < n; i++)
				xx[k_] = xx1[i], yy[k_] = y1, solve(k_ + 1, k);
		}
	}
}

int main() {
	int k, i;

	scanf("%d%d", &n, &k);
	for (i = 0; i < n; i++)
		scanf("%d%d%d%d", &xx1[i], &yy1[i], &xx2[i], &yy2[i]);
	solve(0, k);
	return 0;
}

Compilation message (stderr)

hamburg.c: In function 'main':
hamburg.c:54:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   54 |  scanf("%d%d", &n, &k);
      |  ^~~~~~~~~~~~~~~~~~~~~
hamburg.c:56:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |   scanf("%d%d%d%d", &xx1[i], &yy1[i], &xx2[i], &yy2[i]);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...