#include #include #include #include using namespace std; struct kurz { int cilMena; double pomer; }; struct mena { char identifikator[3]; vector kurzy; double nejvetsiMoznost; }; bool porovnej(char prvni[3], char druhy[3]) { for (int i = 0; i < 3; i++) { if (prvni[i] != druhy[i]) { return false; } } return true; } int main() { while (true) { int pocetMen; cin >> pocetMen; if (!pocetMen) { break; } mena meny[200]; for (int i = 0; i < pocetMen; i++) { cin >> meny[i].identifikator; } int pocetKurzu; cin >> pocetKurzu; char s; for (int i = 0; i < pocetKurzu; i++) { char identifikator[3]; cin >> identifikator; for (int j = 0; j < pocetMen; j++) { if (porovnej(identifikator, meny[j].identifikator)) { cin >> identifikator; for (int k = 0; k < pocetMen; k++) { if (porovnej(identifikator, meny[k].identifikator)) { kurz jedenKurz; jedenKurz.cilMena = k; int a, b; cin >> a; cin >> s; cin >> b; jedenKurz.pomer = (double)b/a; meny[j].kurzy.push_back(jedenKurz); break; } } break; } } } bool vydelam = false; for (int i = 0; i < pocetMen; i++) { for (int j = 0; j < pocetMen; j++) { meny[j].nejvetsiMoznost = 0; } meny[i].nejvetsiMoznost = 1; queue fronta; fronta.push(i); while (!fronta.empty()) { int j; j = fronta.front(); fronta.pop(); vector::iterator iter = meny[j].kurzy.begin(); while (iter != meny[j].kurzy.end()) { if (meny[j].nejvetsiMoznost*iter->pomer > meny[iter->cilMena].nejvetsiMoznost) { meny[iter->cilMena].nejvetsiMoznost = meny[j].nejvetsiMoznost*iter->pomer; fronta.push(iter->cilMena); } iter++; } } if (meny[i].nejvetsiMoznost > 1) { vydelam = true; break; } } if (vydelam) { cout << "Arbitrage" << endl; } else { cout << "Ok" << endl; } } return 0; }