/* * arbitrage.C * * Copyright 2010 Contest team 23 */ #include #include #include using namespace std; string meny[200]; float kurzy[200]; inline int findInArray(string &str, int count){ for (int i = 0; i < count; i++){ if (str.compare(meny[i]) == 0) return i; } } inline int strToInt(string str){ istringstream iss(str); int out; iss >> out; return out; } int main(int argc, char** argv) { char line[256]; int count, pairs; string a,b; string kurz; int aPos, bPos; int pos; int kurzA, kurzB; while(1){ fgets(line, sizeof(line), stdin); sscanf(line, "%d", &count); if (count == 0) break; for (int i = 0; i < count; i++){ kurzy[i] = 0; } fgets(line, sizeof(line), stdin); istringstream iss(line); for (int i = 0; i < count; i++){ //sscanf(line, "%s", &meny[i]); iss >> meny[i]; } fgets(line, sizeof(line), stdin); sscanf(line, "%d", &pairs); bool ok = true; for (int i = 0; i < pairs; i++){ fgets(line, sizeof(line), stdin); istringstream iss(line); iss >> a; iss >> b; iss >> kurz; aPos = findInArray(a, count); bPos = findInArray(b, count); //pozice dvojtecky pos = kurz.find(":"); kurzA = strToInt(kurz.substr(0,pos)); kurzB = strToInt(kurz.substr(pos + 1, kurz.size() - pos +1)); //cout << aPos << " " << bPos << endl; if (kurzy[aPos] == 0) kurzy[aPos] = 1; float tmp = kurzy[aPos] / kurzA * kurzB; //cout << kurzy[aPos] << " " << kurzy[bPos] << endl; if (kurzy[bPos] == 0) kurzy[bPos] = tmp; else if (kurzy[bPos] < tmp) { ok = false; break; } //cout << kurzy[aPos] << " " << kurzy[bPos] << endl << endl; } if (ok) printf("Ok\n"); else printf("Arbitrage\n"); } return 0; }