Submission #68480581


Source Code Expand

Copy
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int cmp(const void* x, const void* y) {
int a = *(const int*)x, b = *(const int*)y;
return a < b ? -1 : a > b;
}
int N, M;
int A[312345];
int B[312345];
int main(void) {
int T, tc;
if (scanf("%d", &T) != 1) return 1;
for (tc = 0; tc < T; tc++) {
int i, cur;
uint64_t sum = 0;
if (scanf("%d%d", &N, &M) != 2) return 1;
for (i = 0; i < N; i++) {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>

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

int N, M;
int A[312345];
int B[312345];

int main(void) {
	int T, tc;
	if (scanf("%d", &T) != 1) return 1;
	for (tc = 0; tc < T; tc++) {
		int i, cur;
		uint64_t sum = 0;
		if (scanf("%d%d", &N, &M) != 2) return 1;
		for (i = 0; i < N; i++) {
			if (scanf("%d", &A[i]) != 1) return 1;
			sum += A[i];
		}
		for (i = 0; i < N; i++) {
			if (scanf("%d", &B[i]) != 1) return 1;
			sum += B[i];
		}
		qsort(A, N, sizeof(*A), cmp);
		qsort(B, N, sizeof(*B), cmp);
		for (i = N - 1, cur = 0; i >= 0 && cur < N; i--, cur++) {
			while (cur < N && A[i] + B[cur] < M) cur++;
			if (cur < N) sum -= M; /* A[i] + B[cur] >= M になった */
		}
		printf("%" PRIu64 "\n", sum);
	}
	return 0;
}

/*

この条件で mod M → -0 or -M
最小値 → -M をなるべくいっぱい発動させたい
-M を発動させるためには、A_i + B_i >= M

A_i を降順でソートしておく
→ 最初は制約がゆるく、だんだん難易度が上がっていく
B_i を昇順でソートしておく
→ 制約がゆるいうちにザコを消化
   ある位置で使えなければ、その後でも使えない

「降順でソート」のかわりに、「昇順でソートし、後ろから見る」

*/

Submission Info

Submission Time
Task D - Match, Mod, Minimize 2
User mikecat
Language C (gcc 12.2.0)
Score 400
Code Size 1432 Byte
Status AC
Exec Time 129 ms
Memory 5292 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 1
AC × 30
Set Name Test Cases
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 02_random_15.txt, 02_random_16.txt, 02_random_17.txt, 02_random_18.txt, 02_random_19.txt, 02_random_20.txt, 02_random_21.txt, 02_random_22.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 0 ms 1748 KiB
01_handmade_00.txt AC 118 ms 5236 KiB
01_handmade_01.txt AC 56 ms 4636 KiB
01_handmade_02.txt AC 58 ms 4660 KiB
01_handmade_03.txt AC 129 ms 5292 KiB
01_handmade_04.txt AC 0 ms 1596 KiB
01_handmade_05.txt AC 29 ms 1576 KiB
02_random_00.txt AC 127 ms 5104 KiB
02_random_01.txt AC 127 ms 5128 KiB
02_random_02.txt AC 127 ms 5216 KiB
02_random_03.txt AC 129 ms 5092 KiB
02_random_04.txt AC 86 ms 1632 KiB
02_random_05.txt AC 86 ms 1632 KiB
02_random_06.txt AC 86 ms 1620 KiB
02_random_07.txt AC 86 ms 1728 KiB
02_random_08.txt AC 86 ms 1736 KiB
02_random_09.txt AC 86 ms 1596 KiB
02_random_10.txt AC 107 ms 1736 KiB
02_random_11.txt AC 107 ms 1728 KiB
02_random_12.txt AC 107 ms 1700 KiB
02_random_13.txt AC 107 ms 1828 KiB
02_random_14.txt AC 107 ms 1728 KiB
02_random_15.txt AC 107 ms 1740 KiB
02_random_16.txt AC 94 ms 1648 KiB
02_random_17.txt AC 86 ms 1748 KiB
02_random_18.txt AC 86 ms 1748 KiB
02_random_19.txt AC 86 ms 1708 KiB
02_random_20.txt AC 86 ms 1564 KiB
02_random_21.txt AC 86 ms 1736 KiB
02_random_22.txt AC 86 ms 1632 KiB


2025-08-15 (Fri)
07:31:34 +09:00