What the heck, rules are made to be broken
Code:
#include <iostream>
#include <deque>
#include <sstream>
using namespace std;
deque <char> OO;
deque<int> OOO;
typedef stringstream QQ;
int l1,l,lO5;
void main()// >;-)
{
for(int O=lO5;O<sizeof("31A16XB 5B4A3D 3P2RX")-1;++O)
{
QQ QQQ;
if(isdigit("31A16XB 5B4A3D 3P2RX"[O]))OO.push_back("31A16XB 5B4A3D 3P2RX"[O]),l=1;
else if("31A16XB 5B4A3D 3P2RX"[O]==' ')continue;
else if (!l)l1=lO5+("31A16XB 5B4A3D 3P2RX"[O])-'A',l=1,OOO.push_back(l1),l1=lO5;
else QQQ << string(OO.begin(),OO.end()),QQQ >>l1,OOO.push_back(l1*26+("31A16XB 5B4A3D 3P2RX"[O])-'A'),l=lO5,l1=lO5,OO.clear();
}
for(unsigned O=0;O<OOO.size();O++)cout << OOO[O]<<"\n";
}
Hope you get an A :-)