#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define max(x,y) ((x) > (y) ? (x) : (y)) #define min(x,y) ((x) < (y) ? (x) : (y)) #define RND(x) (floor((x*1000)+0.5)/1000) #define DEBUG 0 using namespace std; int main(void) { mapbank; string number; int accounts; cin>>accounts; while(accounts) { for(int i=0;i>number>>bilance; bank[number]=RND(bilance*100); } string command; while (1) { cin >> command; if (command == "end") { break; } cin >> number; if (DEBUG) if (bank.find(number) != bank.end()) cout<<"State of " << number << " before: " << bank[number] << endl; if(command=="create") { if(bank.find(number)==bank.end()) { bank[number]=0; cout<<"create: ok"<>add; if(bank.find(number)!=bank.end()) { bank[number]=bank[number]+RND(add*100); cout<<"deposit ";printf("%.2f", add);cout<<": ok"<>add; if(bank.find(number)!=bank.end()) { if(bank[number]>=RND(add*100)) { bank[number]=bank[number]-RND(add*100); cout<<"withdraw "; printf("%.2f", add); cout<<": ok"<>number2>>add; if((bank.find(number)!=bank.end())&&(bank.find(number2)!=bank.end())) { if(number==number2) { cout<<"transfer "; printf("%.2f", add); cout<<": same account"<=RND(add*100)) { if (DEBUG) cout << "Before on " << number2 << ": " << bank[number2] << endl; bank[number] -= RND(add*100); bank[number2] += RND(add*100); int pos1=number.find("/"); int pos2=number2.find("/"); cout<<"transfer "; printf("%.2f", add); cout<<(number.substr(pos1) == number2.substr(pos2) ? ": ok" : ": interbank")<>accounts; } cout << "goodbye" << endl; return 0; }