提出 #77774990


ソースコード 拡げる

Copy
#include <stdio.h>
#include <stdlib.h>
struct nuno_s {
int L, R;
};
int cmp(const void* x, const void* y) {
struct nuno_s a = *(const struct nuno_s*)x, b = *(const struct nuno_s*)y;
return
((a.R > b.R) - (a.R < b.R)) * 2 +
((a.L > b.L) - (a.L < b.L));
}
int N, K;
struct nuno_s nuno[212345];
int main(void) {
int i;
int yes = -1, no = 1010101010;
if (scanf("%d%d", &N, &K) != 2) return 1;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <stdlib.h>

struct nuno_s {
	int L, R;
};

int cmp(const void* x, const void* y) {
	struct nuno_s a = *(const struct nuno_s*)x, b = *(const struct nuno_s*)y;
	return
		((a.R > b.R) - (a.R < b.R)) * 2 +
		((a.L > b.L) - (a.L < b.L));
}

int N, K;
struct nuno_s nuno[212345];

int main(void) {
	int i;
	int yes = -1, no = 1010101010;
	if (scanf("%d%d", &N, &K) != 2) return 1;
	for (i = 0; i < N; i++) {
		if (scanf("%d%d", &nuno[i].L, &nuno[i].R) != 2) return 1;
	}
	qsort(nuno, N, sizeof(*nuno), cmp);
	while (yes + 1 < no) {
		int m = yes + (no - yes) / 2;
		int cnt = 0;
		int prev = -1010101010;
		for (i = 0; i < N; i++) {
			if (prev + m <= nuno[i].L) {
				cnt++;
				prev = nuno[i].R;
			}
		}
		if (cnt >= K) yes = m; else no = m;
	}
	printf("%d\n", yes > 0 ? yes : -1);
	return 0;
}

/*

確保する距離を決め打ち → 二分探索

R の小さい順に使える布を貪欲

*/

提出情報

提出日時
問題 D - Maximize the Gap
ユーザ mikecat
言語 C23 (GCC 14.2.0)
得点 400
コード長 971 Byte
結果 AC
実行時間 56 ms
メモリ 4772 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 27
セット名 テストケース
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_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, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 0 ms 1596 KiB
00_sample_01.txt AC 0 ms 1648 KiB
00_sample_02.txt AC 0 ms 1636 KiB
01_random_03.txt AC 47 ms 4676 KiB
01_random_04.txt AC 47 ms 4772 KiB
01_random_05.txt AC 47 ms 4676 KiB
01_random_06.txt AC 47 ms 4652 KiB
01_random_07.txt AC 47 ms 4668 KiB
01_random_08.txt AC 54 ms 4668 KiB
01_random_09.txt AC 54 ms 4668 KiB
01_random_10.txt AC 47 ms 4572 KiB
01_random_11.txt AC 47 ms 4572 KiB
01_random_12.txt AC 48 ms 4652 KiB
01_random_13.txt AC 47 ms 4772 KiB
01_random_14.txt AC 56 ms 4668 KiB
01_random_15.txt AC 53 ms 4708 KiB
01_random_16.txt AC 56 ms 4772 KiB
01_random_17.txt AC 56 ms 4708 KiB
01_random_18.txt AC 56 ms 4708 KiB
01_random_19.txt AC 56 ms 4628 KiB
01_random_20.txt AC 56 ms 4708 KiB
01_random_21.txt AC 56 ms 4652 KiB
01_random_22.txt AC 47 ms 4648 KiB
01_random_23.txt AC 49 ms 4676 KiB
01_random_24.txt AC 47 ms 4772 KiB
01_random_25.txt AC 0 ms 1688 KiB
01_random_26.txt AC 0 ms 1648 KiB


2026-07-24 (金)
07:31:22 +09:00