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:13:31

#include<iostream>
#include<vector>
#include<queue>
#include<iomanip>

using namespace std;
vector<vector<float>> convertion_rate;
int c;

int min_length = 1e9;
vector<int> path;

void recursive(int currency, float worth, vector<int> history) {
	if (history.size() > c) return;
	if (worth >= 1.01 && min_length > history.size() && currency == 0) {


		min_length = history.size();
		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], 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(0, 1.00, {0});
	if (!path.size()) {
		cout << -1;
		return 0;
	}

	for (int i = 0; i < path.size() - 1; i++) {
		cout << path[i] + 1 << " ";
	}

	return 0;
}