Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //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; }
  4. //bool valid(int i, int j){ return 0 <= i&&i < n && 0 <= j&&j < m; }
  5. #define ll long long
  6. #define MEMSET_INF 127
  7. #define MEMSET_HALF_INF 63
  8. #define fi first
  9. #define se second
  10. #define mp make_pair
  11. #define siz 10
  12.  
  13. typedef pair<int,int> pii;
  14.  
  15. int n;
  16. string s;
  17. int main(){
  18. ios_base::sync_with_stdio(0);
  19.  
  20. //freopen("milano.in","r",stdin);
  21. //freopen("output.txt","w",stdout);
  22. //memset(dist, MEMSET_INF, sizeof dist);
  23. //memset (dp_memo, -1, sizeof dp_memo);
  24.  
  25. int t; cin>>t;
  26.  
  27. while(t--){
  28. cin>>n;
  29.  
  30. int arr[200005]; int cnt[15]; int ans[200005];
  31. vector<int>idx1,idx2;
  32. memset(cnt,0,sizeof cnt);
  33. int mn=1000;
  34.  
  35. cin>>s;
  36.  
  37. for(int i=0;i<s.size();i++){
  38. cout<<i<< ' ';
  39. int x = (int)s[i] - (int)('0');
  40. cnt[x]++;
  41. arr[i]=x;
  42. mn=min(mn,x);
  43. }
  44. cout<<'\n';
  45. if(n==1){
  46. cout<<1<<'\n';
  47. continue;
  48. }
  49.  
  50.  
  51.  
  52. for(int i=0;i<n;i++){
  53. if(cnt[mn]==0){
  54. for(int i=mn;i<10;i++){
  55. if(cnt[i]>0){
  56. mn=i;
  57. break;
  58. }
  59. }
  60. }
  61.  
  62. if(arr[i]>mn){
  63. ans[i]=2;
  64. cnt[arr[i]]--;
  65. idx2.push_back(i);
  66. }
  67. else if(arr[i]==mn){
  68. ans[i]=1;
  69. cnt[arr[i]]--;
  70. idx1.push_back(i);
  71. }
  72. }
  73.  
  74. int last=0;
  75. bool ok=true;
  76. for(int i=1;i<idx1.size();i++){
  77. if(arr[idx1[i]]<arr[idx1[i-1]]){
  78. ok=false; break;
  79. }
  80. last=idx1[i];
  81. }
  82. if(arr[idx2[0]]<arr[last])
  83. ok=false;
  84.  
  85. for(int i=1;i<idx2.size();i++){
  86. if(arr[idx2[i]]<arr[idx2[i-1]])
  87. ok=false;
  88. }
  89.  
  90. if(!ok){
  91. printf("-");
  92. continue;
  93. }
  94.  
  95. for(int i=0;i<n;i++) cout<<ans[i];
  96. cout<<'\n';
  97.  
  98. }
  99.  
  100.  
  101. return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement