#include #include #include #include #include #include #include using namespace std; int N; char A[102]; map M; char dig[102]; int digtot; string towidth(string aux, int w) { while (int(aux.size()) < w) aux = " " + aux; return aux; } double tofloat(string aux) { istringstream saux(aux); double val; saux >> val; return val; } int main() { cin.sync_with_stdio(false); cin >> N; cin.getline(A, sizeof(A)); for (int i = 1; i <= N; ++i) { cin.getline(A, sizeof(A)); string aux; for (int j = 2; A[j] != 0; ++j) aux += A[j]; M[A[0]] = aux; } cin.getline(A, sizeof(A)); for (int i = 0; A[i] != 0; ++i) if (A[i] == ',') dig[++digtot] = A[i + 1]; int dnow = 0; for (int i = 0; A[i] != ','; ++i) { if (A[i] == '%') { ++dnow; if (A[i + 1] == 's') { cout << M[dig[dnow]]; ++i; } else if (A[i + 1] == '.') { int prec = 0; ++i; ++i; while (A[i] >= '0' && A[i] <= '9') { prec = prec * 10 + (A[i] - '0'); ++i; } cout << fixed << setprecision(prec) << tofloat(M[dig[dnow]]); } else { int wid = 0; ++i; while (A[i] >= '0' && A[i] <= '9') { wid = wid * 10 + (A[i] - '0'); ++i; } cout << towidth(M[dig[dnow]], wid); } } else cout << A[i]; } }