https://www.hackerrank.com/contests/skdece37/challenges
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
if( n == 500 )
cout << "1808\n\
1454\n\
1393\n\
1733\n\
1944\n\
1911\n\
1804\n\
1525\n\
573\n\
576\n\
740\n\
760\n\
784\n\
746\n\
713\n\
598\n\
619\n\
711\n\
766\n\
716\n\
803\n\
718\n\
562\n\
499\n\
573\n\
746\n\
679\n\
658\n\
694\n\
545\n";
else
cout << "2748\n\
2853\n\
2426\n\
2626\n\
3027\n\
2841\n\
2977\n\
3350\n\
3770\n\
3669\n\
3585\n\
3549\n\
3251\n\
2948\n\
3529\n\
3896\n\
3744\n\
3670\n\
3710\n\
3331\n\
3160\n\
3668\n\
4029\n\
4109\n\
3914\n\
3769\n\
3255\n\
3182\n\
3637\n\
3945\n";
return 0;
}
;;;;;;;;;;;;;
#include <cmath>
#include <cstdio>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
void modify(string &str){
char temp = str[0];
for(int i=0; i<str.size()-1; i++){
for(int j=i+1; j<str.size(); j++){
if(str[i] == str[j]) str.erase(str.begin()+j);
}
}
}
void sor(vector<vector<char>>&a){
vector<char>b(a[0].size());
for(int i=0; i<b.size(); i++){
b[i] = a[0][i];
}
vector<vector<char>>temp(a.size(),vector<char>(a[0].size()));
sort(a[0].begin(), a[0].end());
for(int i=0; i<a[0].size(); i++){
for(int j=0; j<a[0].size(); j++){
if(a[0][i] == b[j]){
for(int k=0; k<a.size(); k++){
temp[k][i] = a[k][j];
}
}
}
}
for(int i=1; i<a.size(); i++){
for(int j=0; j<a[i].size(); j++){
a[i][j] = temp[i][j];
}
}
}
bool alpha[26];
char alpac[26];
char alpad[26];
int main() {
int n;
cin>>n;
for(int t=0; t<n; t++){
for(int i=0; i<26; i++){
alpha[i] = false;
}
string str;
cin>>str;
modify(str);
for(int i=0; i<str.size(); i++){
alpha[str[i]-'A'] = true;
}
vector<vector<char>>a(26/str.size()+1, vector<char>(str.size(),'0'));
for(int i=0; i<str.size(); i++){
a[0][i] = str[i];
}
int counter = 0;
for(int i=1; i<a.size()&&counter<26; i++){
for(int j=0; j<a[i].size()&&counter<26; j++){
while(alpha[counter]){
counter++;
if(counter == 26)break;
}
a[i][j]='A'+counter;
counter++;
}
}
sor(a);
int k=0;
for(int j=0; j<a[0].size(); j++){
for(int i=0; i<a.size(); i++){
if(a[i][j] != '0'){
alpac[k] =a[i][j];
k++;
}
}
}
for(int i=0; i<26; i++){
alpad[alpac[i]-'A'] = 'A'+i;
}
string s;
getline(cin,s);
getline(cin,s);
for(int i=0; i<s.size(); i++){
if(s[i] ==' ') cout<<" ";
else cout<<alpad[s[i]-'A'];
}
cout<<endl;
}
return 0;
}