fs.cpp
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
#define X first
#define Y second
#define MP make_pair
#define PB push_back
#define SZ size
char pismena[50] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '_', ',', '.', '?'};
string mor[50] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
"....", "..", ".---", "-.-", ".-..", "--", "-.",
"---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--..",
"..--", ".-.-", "---.", "----"};
string vratMor(char pismeno) {
int pocet = strlen(pismena);
for (int i = 0; i < pocet; i++)
if (pismeno == pismena[i])
return mor[i];
return 0;
}
int vratPocet(char pismeno) {
int pocet = strlen(pismena);
for (int i = 0; i < pocet; i++)
if (pismeno == pismena[i])
return mor[i].size();
return 0;
}
char vratVys(string hladaj) {
int pocet = 50;
for (int i = 0; i < pocet; i++) {
size_t aaa = hladaj.compare(mor[i]);
if (aaa == 0)
return pismena[i];
}
return 0;
}
int main(void) {
/*
for (int i = 0; i < 26+4; i++) {
cout << pismena[i] << ": "<<mor[i] << endl;
}*/
string sifra = "";
string vys = "";
string vstup;
vector <int> pocty;
while(1) {
getline(cin, vstup);
if(!cin) return 0;
//cout << vstup.size() << "\n";
int pocet = vstup.size();
for (int i = 0; i < pocet; i++) {
sifra += vratMor(vstup.at(i));
pocty.push_back( vratPocet(vstup.at(i)));
}
/*
//printf("%c\n", pismena[2]);
cout << sifra;
int pocet2 = pocty.size();
for(int i = 0; i < pocet2; i++)
cout << pocty[i];
*/
int start = 0;
int pocet2 = pocty.size();
string hladaj;
for (int i = pocet2-1; i >= 0; i--) {
//cout << sifra.substr(start, pocty[i]) << "\n";
hladaj = sifra.substr(start, pocty[i]);
start = start + pocty[i];
vys += vratVys(hladaj);
//sifra += vratMor(vstup.at(i));
//pocty.push_back( vratPocet(vstup.at(i)));
}
/*
for (int i = pocet2-1; i >= 0; i--) {
cout << pocty[i];
}
cout << "\n";
*/
//cout << vstup << "\n";
//cout << sifra << "\n";
cout << vys << "\n";
vys = "";
sifra = "";
pocty.clear();
//cout << vys << "\n";
//printf("Ok\n");
}
return 0;
}