AcWing 2021.5.9. M. Mathematics society problem
原题链接
简单
作者:
DPH
,
2021-05-10 17:00:52
,
所有人可见
,
阅读 213
#include <iostream>
#include <string>
using namespace std;
int a[10], b[10], an[1010];
int main()
{
string s; cin>>s; int ls = s.size();
for(int i = 0; i < ls; i++) a[s[i] - '0']++;
for(int i = 1; i <= 9; i++) cin>>b[i];
int x = 1;
for(int i = 0; i < ls; i++)
{
int no = s[i] - '0'; //这两个都WA了 为什么不行 给个反例
if(a[no] == b[no]){ a[no]--, b[no]--; continue;}//1.没有a[no]--, b[no]--
//2.a[no]--, b[no]-- 变成 a[no] = 0, b[no] = 0
an[x] = no; a[no]--;
while(x > 1 && b[an[x - 1]] > 0 && no > an[x - 1]) b[an[x - 1]]--, an[--x] = no;
x++;
}
x--;
for(int i = 1; i <= x; i++) cout<<an[i];
return 0;
}