// Sonny's solution to jogger // Stanford Local Programming Contest, October 2007 #include #include #include #include using namespace std; int main() { int n, r, t; while (cin >> n >> r >> t) { if (n == 0) break; // read in the distances vector< vector > d(n, vector(n, 0)); for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) cin >> d[i][j]; // find the longest route, trying all pairs of houses... int best = 0; for (int i = 0; i < n; ++i) for (int j = i+1; j < n; ++j) { // prune search if (d[i][j] * r + (n-2)*t < best) continue; // find internal nodes set internal; for (int k = 0; k < n; ++k) if (i != k && j != k) internal.insert(d[i][k] - d[j][k]); // count time best = max(best, int(d[i][j] * r + internal.size()*t)); } cout << best << endl; } return 0; }