結果

問題 No.1630 Sorting Integers (Greater than K)
ユーザー ygussanyygussany
提出日時 2021-07-30 20:56:47
言語 C
(gcc 12.3.0)
結果
WA  
実行時間 -
コード長 962 bytes
コンパイル時間 240 ms
コンパイル使用メモリ 30,336 KB
実行使用メモリ 26,752 KB
最終ジャッジ日時 2024-09-15 22:47:24
合計ジャッジ時間 1,841 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 2 ms
5,376 KB
testcase_03 AC 1 ms
5,376 KB
testcase_04 AC 2 ms
5,376 KB
testcase_05 AC 2 ms
5,376 KB
testcase_06 AC 2 ms
5,376 KB
testcase_07 AC 2 ms
5,376 KB
testcase_08 AC 2 ms
5,376 KB
testcase_09 AC 2 ms
5,376 KB
testcase_10 AC 1 ms
5,376 KB
testcase_11 AC 2 ms
5,376 KB
testcase_12 AC 2 ms
5,376 KB
testcase_13 AC 2 ms
5,376 KB
testcase_14 AC 2 ms
5,376 KB
testcase_15 AC 1 ms
5,376 KB
testcase_16 AC 34 ms
26,496 KB
testcase_17 AC 35 ms
26,752 KB
testcase_18 AC 31 ms
26,240 KB
testcase_19 AC 31 ms
26,368 KB
testcase_20 AC 6 ms
5,376 KB
testcase_21 AC 6 ms
5,376 KB
testcase_22 AC 7 ms
5,376 KB
testcase_23 WA -
testcase_24 AC 30 ms
21,760 KB
testcase_25 WA -
testcase_26 AC 31 ms
26,496 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <stdio.h>

int recursion(char K[], int c[], char ans[], int flag)
{
	if (K[0] == 0) return 0;
	
	int i;
	if (flag != 0) {
		for (i = 1; i <= 9; i++) if (c[i] > 0) break;
		c[i]--;
		ans[0] = '0' + i;
		return recursion(&(K[1]), c, &(ans[1]), 1);
	}
	
	if (c[K[0] - '0'] > 0) {
		c[K[0] - '0']--;
		ans[0] = K[0];
		if (recursion(&(K[1]), c, &(ans[1]), 0) == 0) return 0;
		c[K[0] - '0']++;
	}
	for (i = K[0] - '0' + 1; i <= 9; i++) if (c[i] > 0) break;
	if (i > 9) return -1;
	c[i]--;
	ans[0] = '0' + i;
	return recursion(&(K[1]), c, &(ans[1]), 1);
}

int main()
{
	int i, j, N, c[10];
	char K[1000010], ans[500005] = {};
	scanf("%d %s", &N, &(K[500005]));
	for (i = 1, c[0] = 0; i <= 9; i++) scanf("%d", &(c[i]));
	
	for (i = 0; i < 500005; i++) K[i] = '0';
	for (; K[i] != 0; i++);
	for (j = i - 1; K[j] == '9'; K[j--] = '0');
	K[j]++;
	if (recursion(&(K[i-N]), c, ans, 0) == 0) printf("%s\n", ans);
	else printf("-1\n");
	fflush(stdout);
	return 0;
}
0