// @BEGIN_OF_SOURCE_CODE /* @JUDGE_ID: 17243NT 187 C++ "One easy problem" */ // Send to judge@uva.es #include #include #include #include #ifdef ONLINE_JUDGE #define ins cin #define outs cout #else #define ins fin #define outs fout ifstream fin("myprog.in"); ofstream fout("myprog.out"); #endif typedef struct { int id; char name[100]; } account; typedef struct { int tid; int aid; int balance; } transaction; int get3d(); void process(); int naccounts; account accounts[110]; int ntrans; transaction trans[100]; int main() { int i; for(;;) { accounts[naccounts].id = get3d(); ins.getline(accounts[naccounts].name, 100, '\n'); for(i = strlen(accounts[naccounts].name); i < 30; i++) accounts[naccounts].name[i] = ' '; accounts[naccounts].name[30] = '\0'; if(accounts[naccounts].id == 0) break; naccounts++; } outs.setf(ios::fixed); for(;;) { trans[ntrans].tid = get3d(); trans[ntrans].aid = get3d(); ins >> trans[ntrans].balance; if(trans[0].tid != trans[ntrans].tid) { process(); if(trans[ntrans].tid == 0) break; trans[0] = trans[ntrans]; ntrans = 1; continue; } ntrans++; } return 0; } void process() { int balance, i, j; balance = 0; for(i = 0; i < ntrans; i++) balance -= trans[i].balance; if(balance != 0) { outs << "*** Transaction " << trans[0].tid / 100 << (trans[0].tid / 10) % 10 << trans[0].tid % 10 << " is out of balance ***\n"; for(i = 0; i < ntrans; i++) { for(j = 0; j < naccounts; j++) { if(trans[i].aid == accounts[j].id) { outs << trans[i].aid / 100 << (trans[i].aid / 10) % 10 << trans[i].aid % 10 << ' ' << accounts[j].name << ' ' << setw(10) << setprecision(2) << trans[i].balance * .01 << endl; break; } } } outs << "999 Out of balance " << setw(10) << setprecision(2) << balance * .01 << endl << endl; } } int get3d() { char a, b, c; ins >> a >> b >> c; return 100 * (a - '0') + 10 * (b - '0') + (c - '0'); } // @END_OF_SOURCE_CODE