#include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,n) for (int i=0; i=0; i--) #define pb push_back #define fi first #define se second map accounts; typedef long long ll; typedef pair pi; int init(){ accounts.clear(); int n; scanf("%d",&n); char tmp[200]; FOR(q,n) { int a,b; scanf("%s %d.%d",tmp,&a,&b); string s=string(tmp); accounts[s]=a*100+b; } return n; } char tmp[100]; char tmp2[100]; char tmp3[100]; void solve(){ while (true) { scanf("%s",tmp); if (tmp[0]=='e') { printf("end\n\n"); break; } if (tmp[0]=='c') { printf("create: "); scanf("%s",tmp); string s=string(tmp); if (accounts.find(s)!=accounts.end()) { printf("already exists\n"); } else { printf("ok\n"); accounts[s]=0; } continue; } if (tmp[0]=='d') { int a,b; scanf("%s %d.%d",tmp2,&a,&b); printf("deposit %d.%02d: ",a,b); string s=string(tmp2); if (accounts.find(s)==accounts.end()) { printf("no such account\n"); } else { printf("ok\n"); accounts[s]+=100*a+b; } continue; } if (tmp[0]=='w') { int a,b; scanf("%s %d.%d",tmp2,&a,&b); printf("withdraw %d.%02d: ",a,b); string s=string(tmp2); if (accounts.find(s)==accounts.end()) { printf("no such account\n"); } else { if (accounts[s]<100*a+b) { printf("insufficient funds\n"); } else { accounts[s]-=100*a+b; printf("ok\n"); } } continue; } if (tmp[0]=='t') { int a,b; scanf("%s %s %d.%d",tmp2,tmp3,&a,&b); string from=string(tmp2); string to=string(tmp3); printf("transfer %d.%02d: ",a,b); if (accounts.find(from)==accounts.end() || accounts.find(to) == accounts.end()) { printf("no such account\n"); } else { if (from==to) { printf("same account\n"); } else { if (accounts[from]<100*a+b) { printf("insufficient funds\n"); } else { accounts[from]-=100*a+b; accounts[to]+=100*a+b; if (from[5]!=to[5]) printf("interbank\n"); else printf("ok\n"); } } } } } } int main() { while (init()) solve(); printf("goodbye\n"); }