結果
問題 |
No.1630 Sorting Integers (Greater than K)
|
ユーザー |
|
提出日時 | 2021-07-30 21:23:26 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,435 bytes |
コンパイル時間 | 118 ms |
コンパイル使用メモリ | 12,544 KB |
実行使用メモリ | 53,428 KB |
最終ジャッジ日時 | 2024-09-15 22:50:23 |
合計ジャッジ時間 | 5,997 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 9 WA * 9 RE * 4 |
ソースコード
N, K = input().split() N = int(N) K = list(int(x) for x in K) C = list(map(int, input().split())) ans = [] if len(K) < N: for i, c in enumerate(C, 1): ans.extend([i] * c) elif len(K) > N: print(-1) exit() else: assert len(K) == N # 不可能 tmp = [] for i, c in enumerate(C, 1): tmp.extend([i] * c) tmp = reversed(tmp) for k, i in zip(K, tmp): if k < i: break elif k > i: print(-1) exit() else: print(-1) flag = False for k in K: if flag: break if C[k - 1]: C[k - 1] -= 1 ans.append(k) continue for j in range(k + 1, 10): if C[j - 1]: C[j - 1] -= 1 ans.append(j) for i, c in enumerate(C, 1): ans.extend([i] * c) flag = True break # 同じになってしまった時の処理 if ans == K: m = 0 for i in range(N - 1, 0, -1): C[ans[i] - 1] += 1 if m > ans[i]: break m = ans[i] ans.pop() for j in range(ans[i] + 1, 10): if C[j - 1]: C[j - 1] -= 1 ans[i] = j for i, c in enumerate(C, 1): ans.extend([i] * c) break print(''.join(map(str, ans)))