Pagini recente » Cod sursa (job #1981004) | Cod sursa (job #2539848) | Cod sursa (job #1556708) | Cod sursa (job #461045) | Cod sursa (job #2891097)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 50005
long long check(long double mn, long long *d, long long *v, long long n)
{
long long ans = 0;
for (long long i = 1; i <= n; ++i) {
long long spent = (long long)(0.5 * (sqrt(1.0 + 4.0 * d[i] / mn) - 1.0) - v[i] + 1.0);
if (spent >= 1)
ans += spent;
}
return ans;
}
int main()
{
ifstream fin("orase2.in");
ofstream fout("orase2.out");
long long n, x;
fin >> n >> n >> x;
long long d[NMAX], v[NMAX];
for (long long i = 1; i <= n; ++i)
fin >> d[i];
for (long long i = 1; i <= n; ++i)
fin >> v[i];
long double st = 0, dr = 1e5, best;
const long double eps = 0.00000000000000001;
while (abs(st - dr) > eps) {
long double mid = st + (dr - st) / 2.0;
if (check(mid, d, v, n) < x)
dr = mid;
else
best = st = mid;
}
long long total_spent = 0;
long double total_time = 0;
for (long long i = 1; i <= n; ++i) {
long long spent = (long long)(0.5 * (sqrt(1.0 + 4.0 * d[i] / best) - 1.0) - v[i] + 1.0);
if (spent < 1) {
total_time += 1.0 * d[i] / v[i];
continue;
}
total_spent += spent;
total_time += 1.0 * d[i] / (v[i] + spent);
}
fout << (long long)(total_time + best * (total_spent - x)) << '\n';
}