Cercetătorii ce lucrează la programul SETI au recepţionat două transmisii de date foarte ciudate, date care ar putea veni din partea unor civilizaţii extraterestre. Primul set de date este format din 10
caractere distincte, date în ordinea lor lexicografică, ce formează alfabetul extraterestru. A doua transmisie conţine cuvinte din exact 4
caractere.
Cerința
Cercetătorii trebuie să ordoneze lexicografic cuvintele primite în a doua transmisie (conform alfabetului extraterestru).
Date de intrare
Fișierul de intrare seti.in
conţine pe prima linie cele 10
caractere ale alfabetului, iar pe fiecare din următoarele linii câte un cuvânt.
Date de ieșire
Fișierul de ieșire seti.out
va conţine cuvintele ordonate, câte unul pe linie.
Restricții și precizări
- În fişier nu sunt mai mult de
200 000
de cuvinte, iar caracterele sunt literele mici ale alfabetului englez. - Datele de intrare sunt corecte.
Exemplu
seti.in
abcdefghij aaaa fgaa aabc iihf
seti.out
aaaa aabc fgaa iihf
#include <fstream> using namespace std; int cod[30],f[10000]; int main() { ifstream cin("seti.in"); ofstream cout("seti.out"); string s,a; int nr=0; cin>>s; for(int i=0;i<s.size();i++) { cod[s[i]-'a']=i; } while(cin>>a) { nr=cod[a[0]-'a']*1000+cod[a[1]-'a']*100+cod[a[2]-'a']*10+cod[a[3]-'a']; f[nr]++; } for(int i=0;i<10000;i++) { if(f[i]>0) { a=""; a+=s[i/1000]; a+=s[i/100%10]; a+=s[i/10%10]; a+=s[i%10]; while(f[i]>0) { cout<<a<<'\n'; f[i]--; } } } return 0; }