This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pii pair<ll,ll>
#define f first
#define s second
ll n, k;
const ll N = 507;
ll A[N], B[N];
ld minWynik = (ld) 10000000;
vector <vector<pii>> maskiV;
void maski(ll bit, ll rozm, vector <pii> x)
{
if(bit > rozm) maskiV.push_back(x);
for(ll i=1; i<=n; i++)
{
bool nieMa = true;
for(pii v : x) if(v.f == i) nieMa = false;
if(!nieMa) continue;
x.push_back({i,1});
maski(bit+1, rozm, x);
if(B[i] != -1)
{
x[bit-1].s = 2;
maski(bit+1, rozm, x);
}
x.erase(x.begin() + bit-1);
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
for(ll i=1; i<=n; i++)
{
cin >> A[i] >> B[i];
}
vector <pii> tmpV;
maski(1, k, tmpV);
/*ll licznik = 0;
for(vector <pii> x : maskiV)
{
cout << endl << ++licznik << endl;
for(pii v : x) cout << v.f << ',' << v.s << " ";
}*/
for(vector <pii> x : maskiV)
{
ld wynik = 0;
ld wsp = 1;
for(pii v : x)
{
if(v.s == 1)
{
wynik += (ld) A[v.f] / wsp;
}
else
{
wynik += (ld) B[v.f] / wsp;
wsp += 1;
}
}
if(wynik == -1)
{
cout << endl;
for(pii v : x)
{
cout << v.f << "," << v.s << " ";
}
cout << endl << wynik;
}
minWynik = min(minWynik, wynik);
}
cout << fixed << setprecision(7) << minWynik;
}
# | 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... |