Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <bitset>
- #include <cstdio>
- #include <string>
- #include <cstring>
- #include <vector>
- #include <queue>
- #include <stack>
- #include <set>
- #include <map>
- #include <algorithm>
- #include <cmath>
- #include <cstdlib>
- #include <cctype>
- #include <numeric>
- #define FOR(i,A) for(typeof (A).begin() i = (A).begin() ; i != (A).end() ; i++)
- #define mp make_pair
- #define debug( x ) cout << #x << " = " << x << endl
- #define clr(v,x) memset( v, x , sizeof v )
- #define all(x) (x).begin() , (x).end()
- #define rall(x) (x).rbegin() , (x).rend()
- #define TAM 110
- using namespace std;
- typedef pair<char,int> ii ;
- typedef long long ll ;
- typedef long double ld ;
- typedef pair<int,ii> pii ;
- map<char,int> m1 , m2 ;
- void init(){
- m1.clear() ;
- m2.clear() ;
- }
- int main(){
- int test ;
- scanf("%d" , &test ) ;
- cin.ignore() ;
- string s1 , s2 ;
- for(int k = 0 ; k < test ; k++){
- if( k ) cout << endl ;
- init() ;
- getline( cin , s1 ) ; // blank
- getline( cin , s1 ) ;
- getline( cin , s2 ) ;
- for(int i = 0 ; i < s1.size() ; i++){
- if( isalpha( s1[ i ] ) )
- m1[ s1[ i ] ]++ ;
- }
- for(int i = 0 ; i < s2.size() ; i++){
- if( isalpha( s2[ i ] ) )
- m2[ s2[ i ] ]++ ;
- }
- vector<ii> v1 , v2 ;
- FOR(i,m1){
- v1.push_back( mp( i->second , i->first ) ) ;
- // printf("%c: %d\n" , i->first , i->second ) ;
- }
- // cout << endl ;
- FOR(i,m2){
- v2.push_back( mp( i->second , i->first ) ) ;
- // printf("%c: %d\n" , i->first , i->second ) ;
- }
- sort( rall( v1 ) ) ;
- sort( rall( v2 ) ) ;
- map<char,char> final ;
- for(int i = 0 ; i < v1.size() ; i++) final[ v2[ i ].second ] = v1[ i ].second ;
- for(int i = 0 ; i < s2.size() ; i++){
- if( isalpha( s2[ i ] ) )
- s2[ i ] = final[ s2[ i ] ] ;
- }
- printf("%s\n" , s2.c_str() ) ;
- }
- return 0 ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement