Advertisement
NonWhite

UVA 468 [WA]

Jul 14th, 2012
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <bitset>
  4. #include <cstdio>
  5. #include <string>
  6. #include <cstring>
  7. #include <vector>
  8. #include <queue>
  9. #include <stack>
  10. #include <set>
  11. #include <map>
  12. #include <algorithm>
  13. #include <cmath>
  14. #include <cstdlib>
  15. #include <cctype>
  16. #include <numeric>
  17. #define FOR(i,A) for(typeof (A).begin() i = (A).begin() ; i != (A).end() ; i++)
  18. #define mp make_pair
  19. #define debug( x ) cout << #x << " = " << x << endl
  20. #define clr(v,x) memset( v, x , sizeof v )
  21. #define all(x) (x).begin() , (x).end()
  22. #define rall(x) (x).rbegin() , (x).rend()
  23. #define TAM 110
  24.  
  25. using namespace std;
  26.  
  27. typedef pair<char,int> ii ;
  28. typedef long long ll ;
  29. typedef long double ld ;
  30. typedef pair<int,ii> pii ;
  31.  
  32. map<char,int> m1 , m2 ;
  33.  
  34. void init(){
  35.     m1.clear() ;
  36.     m2.clear() ;
  37. }
  38.  
  39. int main(){
  40.  
  41.     int test ;
  42.     scanf("%d" , &test ) ;
  43.     cin.ignore() ;
  44.     string s1 , s2 ;
  45.  
  46.     for(int k = 0 ; k < test ; k++){
  47.         if( k ) cout << endl ;
  48.         init() ;
  49.         getline( cin , s1 ) ; // blank
  50.         getline( cin , s1 ) ;
  51.         getline( cin , s2 ) ;
  52.         for(int i = 0 ; i < s1.size() ; i++){
  53.             if( isalpha( s1[ i ] ) )
  54.                 m1[ s1[ i ] ]++ ;
  55.         }
  56.         for(int i = 0 ; i < s2.size() ; i++){
  57.             if( isalpha( s2[ i ] ) )
  58.                 m2[ s2[ i ] ]++ ;
  59.         }
  60.  
  61.         vector<ii> v1 , v2 ;
  62.         FOR(i,m1){
  63.             v1.push_back( mp( i->second , i->first ) ) ;
  64. //          printf("%c: %d\n" , i->first , i->second ) ;
  65.         }
  66. //      cout << endl ;
  67.  
  68.         FOR(i,m2){
  69.             v2.push_back( mp( i->second , i->first ) ) ;
  70. //          printf("%c: %d\n" , i->first , i->second ) ;
  71.         }
  72.  
  73.         sort( rall( v1 ) ) ;
  74.         sort( rall( v2 ) ) ;
  75.  
  76.         map<char,char> final ;
  77.         for(int i = 0 ; i < v1.size() ; i++) final[ v2[ i ].second ] = v1[ i ].second ;
  78.        
  79.         for(int i = 0 ; i < s2.size() ; i++){
  80.             if( isalpha( s2[ i ] ) )
  81.                 s2[ i ] = final[ s2[ i ] ] ;
  82.         }
  83.         printf("%s\n" , s2.c_str() ) ;
  84.     }
  85.     return 0 ;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement