Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: C12
Problemset: forex
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-07 00:33:50
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
double cost[31][31] = {0};
int out[31];
cin >> n;
for(int i = 0;i < n;i++){
for(int j = 0;j < n;j++){
cin >> cost[i][j];
}
out[i] = INT_MAX;
}
for(int i = 0;i < n;i++){
int b = 1;
int c = 0;
double prev[31];
for(int j = 0;j < n;j++){
prev[j] = 0;
}
prev[i] = 1;
while(b){
b = 0;
c++;
double cur[31];
for(int i = 0;i < n;i++){
cur[i] = prev[i];
}
for(int j = 0;j < n;j++){
for(int k = 0;k < n;k++){
if(prev[j] * cost[j][k] > cur[k]){
cur[k] = prev[j] * cost[j][k];
b = 1;
}
}
}
if(cur[i] >= 1.01){
out[i] = c;
break;
}
for(int i = 0;i < n;i++){
prev[i] = cur[i];
}
}
}
int idx = 0;
int mx = out[0];
for(int i = 1;i < n;i++){
if(out[i] < mx){
mx = out[i];
idx = i;
}
}
if(mx == INT_MAX){
cout << -1;
}
else{
cout << (idx+1) << ' ' << mx;
}
return 0;
}