Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- //bool cmp(pair<int, int>a, pair<int, int>b){if(a.first==b.first) return a.second > b.second; else return a.first<b.first; }
- //bool valid(int i, int j){ return 0 <= i&&i < n && 0 <= j&&j < m; }
- #define ll long long
- #define MEMSET_INF 127
- #define MEMSET_HALF_INF 63
- #define fi first
- #define se second
- #define mp make_pair
- #define siz 10
- typedef pair<int,int> pii;
- int n;
- string s;
- int main(){
- ios_base::sync_with_stdio(0);
- //freopen("milano.in","r",stdin);
- //freopen("output.txt","w",stdout);
- //memset(dist, MEMSET_INF, sizeof dist);
- //memset (dp_memo, -1, sizeof dp_memo);
- int t; cin>>t;
- while(t--){
- cin>>n;
- int arr[200005]; int cnt[15]; int ans[200005];
- vector<int>idx1,idx2;
- memset(cnt,0,sizeof cnt);
- int mn=1000;
- cin>>s;
- for(int i=0;i<s.size();i++){
- cout<<i<< ' ';
- int x = (int)s[i] - (int)('0');
- cnt[x]++;
- arr[i]=x;
- mn=min(mn,x);
- }
- cout<<'\n';
- if(n==1){
- cout<<1<<'\n';
- continue;
- }
- for(int i=0;i<n;i++){
- if(cnt[mn]==0){
- for(int i=mn;i<10;i++){
- if(cnt[i]>0){
- mn=i;
- break;
- }
- }
- }
- if(arr[i]>mn){
- ans[i]=2;
- cnt[arr[i]]--;
- idx2.push_back(i);
- }
- else if(arr[i]==mn){
- ans[i]=1;
- cnt[arr[i]]--;
- idx1.push_back(i);
- }
- }
- int last=0;
- bool ok=true;
- for(int i=1;i<idx1.size();i++){
- if(arr[idx1[i]]<arr[idx1[i-1]]){
- ok=false; break;
- }
- last=idx1[i];
- }
- if(arr[idx2[0]]<arr[last])
- ok=false;
- for(int i=1;i<idx2.size();i++){
- if(arr[idx2[i]]<arr[idx2[i-1]])
- ok=false;
- }
- if(!ok){
- printf("-");
- continue;
- }
- for(int i=0;i<n;i++) cout<<ans[i];
- cout<<'\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement