#include<bits/stdc++.h>
using namespace std;
const int NMAX = 500+1;
pair<int, int> tempsNec[NMAX];
int nbVilles, nbNec;
bool vu[NMAX];
vector<int> sequence;
pair<double, vector<int>> coutPourPrendre(int nbPris, double nbCollaborateur)
{
if(nbPris == nbNec) {
vector<int> w;
return {0, w};
}
pair<double, vector<int>> meill = {1000000, {}};
for(int i = 0; i < nbVilles; i++)
{
if(vu[i]) continue;
vu[i] = true;
double A = tempsNec[i].first, B = tempsNec[i].second;
auto retour = coutPourPrendre(nbPris+1, nbCollaborateur);
retour.second.push_back(i);
double actu = A/nbCollaborateur + retour.first;
if(actu <= meill.first)
{
meill.second = retour.second;
meill.first = actu;
}
if(B == -1)
{
vu[i] = false;
continue;
}
retour = coutPourPrendre(nbPris+1, nbCollaborateur+1);
retour.second.push_back(i);
actu = B/nbCollaborateur + retour.first;
if(actu <= meill.first)
{
meill.second = retour.second;
meill.first = actu;
}
vu[i] = false;
sequence.pop_back();
}
return meill;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int nbT = 1;
for(int c = 0; c < nbT; c++) {
cin >> nbVilles >> nbNec;
for(int i = 0; i < nbVilles; i++)
{
int a, b;
cin >> a >> b;
tempsNec[i] = {a, b};
}
// cout << "klj" << endl;
auto a = coutPourPrendre(0, 1);
cout << a.first << "\n";
//for(int i : a.second) cout << i << " ";
//cout << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |