Submission
Status:
[-SSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: goine
Problemset: forex
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-10 21:07:36
#include<iostream>
#include<vector>
#include<queue>
#include<iomanip>
using namespace std;
vector<vector<float>> convertion_rate;
int c;
int min_length = 999;
vector<int> path;
void recursive(int currency, float worth, int length, vector<int> history) {
if (length > c) return;
if (worth >= 1.01 && min_length > length && currency == 0) {
min_length = length;
path = history;
return;
};
for (int i = 0; i < c; i++) {
vector<int> newHistory = history;
newHistory.push_back(i);
recursive(i, worth * convertion_rate[currency][i], length + 1, newHistory);
}
}
int main() {
cin >> c;
convertion_rate.resize(c, vector<float>(c));
for (int i = 0; i < c; i++) {
for (int j = 0; j < c; j++) {
cin >> convertion_rate[i][j];
}
}
recursive(1, 1.00, 0, {1});
if (path.size() == 1) {
cout << -1;
return 0;
}
for (int i = 0; i < path.size() - 1; i++) {
cout << path[i] << " ";
}
return 0;
}