Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: goine
Problemset: forex
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-10 22:12:54
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<vector<double>> rate(n, vector<double>(n));
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> rate[i][j];
int bestStart = -1;
int bestSteps = n + 1;
for (int start = 0; start < n; start++) {
vector<vector<double>> dp(n, vector<double>(n+1, 0.0));
dp[start][0] = 1.0;
int stepsFound = -1;
for (int k = 1; k <= n; k++) {
for (int u = 0; u < n; u++) {
if (dp[u][k-1] == 0) continue;
for (int v = 0; v < n; v++) {
dp[v][k] = max(dp[v][k], dp[u][k-1] * rate[u][v]);
}
}
if (dp[start][k] > 1.01) {
stepsFound = k;
break;
}
}
if (stepsFound != -1 && stepsFound < bestSteps) {
bestSteps = stepsFound;
bestStart = start;
}
}
if (bestStart == -1) {
cout << -1 << endl;
} else {
cout << bestStart + 1 << " " << bestSteps << endl;
}
return 0;
}