//Code by Patcas Csaba #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define PII pair #define VB vector #define VI vector #define VD vector #define VS vector #define VPII vector > #define VVI vector < VI > #define VVB vector < VB > #define FORN(i, n) for(int i = 0; i < (n); ++i) #define FOR(i, a, b) for(int i = (a); i <= (b); ++i) #define FORD(i, a, b) for(int i = (a); i >= (b); --i) #define REPEAT do{ #define UNTIL(x) }while(!(x)); #define SZ size() #define BG begin() #define EN end() #define CL clear() #define X first #define Y second #define RS resize #define PB push_back #define MP make_pair #define ALL(x) x.begin(), x.end() #define IN_FILE "a.in" #define OUT_FILE "a.out" int n; map var; string s, start; VS vars, sol; int main() { //Read data //freopen(IN_FILE, "r", stdin); //freopen(OUT_FILE, "w", stdout); cin >> n; getline(cin, s); FORN(i, n) { getline(cin, s); var[s.substr(0, 1)] = s.substr(2, 200); } getline(cin, s); start = s.substr(0, s.find(",")); s.erase(0, start.SZ + 1); FOR(i, 0, s.SZ / 2) vars.PB(s.substr(i * 2, 1)); stringstream ss(start); string aux; int indVar = 0; while (ss >> aux) { if (aux[0] != '%') { sol.PB(aux); continue; } if (aux == "%s") { sol.PB(var[vars[indVar]]); ++indVar; continue; } if (aux[1] == '.') { string prec = aux.substr(2, aux.SZ - 3); int intPrec = atoi(prec.c_str()); stringstream ss2; ss2 << fixed << setprecision(intPrec) << atof(var[vars[indVar]].c_str()); string aux2; ss2 >> aux2; sol.PB(aux2); ++indVar; continue; } string wid = aux.substr(1, aux.SZ - 2); int intWid = atoi(wid.c_str()); string aux2 = var[vars[indVar]]; while (aux2.SZ < intWid) aux2 = " " + aux2; sol.PB(aux2); ++indVar; } //Solve FORN(i, sol.SZ - 1) cout << sol[i] << " "; cout << sol[sol.SZ - 1] << endl; //Write data return 0; }