結果
問題 | No.1630 Sorting Integers (Greater than K) |
ユーザー |
![]() |
提出日時 | 2021-07-30 20:49:14 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 83 ms / 2,000 ms |
コード長 | 822 bytes |
コンパイル時間 | 459 ms |
コンパイル使用メモリ | 49,280 KB |
実行使用メモリ | 36,652 KB |
最終ジャッジ日時 | 2024-09-15 22:40:57 |
合計ジャッジ時間 | 2,107 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 22 |
ソースコード
#include <stdio.h>#include <vector>#include <string.h>char x[500010];std::vector<int> ans;int c[110],b;int func(int k){if(k<1) return 0;int digit = x[b-k+1]-'0';if(c[digit]>0){ans.push_back(digit);c[digit]--;int t = func(k-1);if(t==1) return 1;c[digit]++;ans.pop_back();}for(int i=digit+1;i<=9;i++){if(c[i]>0){ans.push_back(i);c[i]--;for(int j=1;j<=9;j++) while(c[j]--) ans.push_back(j);return 1;}}return 0;}int main(){int a;scanf("%d",&a);scanf("%s",x+1);b = strlen(x+1);for(int i=1;i<=9;i++) scanf("%d",&c[i]);if(b>a) printf("-1");else if(b<a){for(int i=1;i<=9;i++) while(c[i]--) printf("%d",i);return 0;}else{int t = func(a);if(t==1) for(int i=0;i<ans.size();i++) printf("%d",ans[i]);else printf("-1");}}