using
System;
using
System.Linq;
using
System.Collections.Generic;
class
GFG
{
private
struct
Fraction
{
public
int
Numerator;
public
int
Denominator;
}
static
double
MaxAverageRatio(Fraction[] arr,
int
K)
{
int
N = arr.Length;
double
[] extra =
new
double
[N];
for
(
int
i = 0; i < N; i++) {
extra[i] = ((
double
)(arr[i].Numerator + 1)
/ (
double
)(arr[i].Denominator + 1))
- (
double
)arr[i].Numerator
/ (
double
)arr[i].Denominator;
}
while
(K-- > 0) {
int
index = Array.IndexOf(extra, extra.Max());
arr[index].Numerator += 1;
arr[index].Denominator += 1;
extra[index]
= ((
double
)(arr[index].Numerator + 1)
/ (
double
)(arr[index].Denominator + 1))
- (
double
)arr[index].Numerator
/ (
double
)arr[index].Denominator;
}
double
ans = 0;
for
(
int
i = 0; i < N; i++) {
ans += (
double
)arr[i].Numerator
/ (
double
)arr[i].Denominator;
}
return
ans / N;
}
static
void
Main(
string
[] args)
{
Fraction[] arr =
new
Fraction[] {
new
Fraction{ Numerator = 1, Denominator = 2 },
new
Fraction{ Numerator = 3, Denominator = 5 },
new
Fraction{ Numerator = 2, Denominator = 2 }
};
int
K = 2;
Console.WriteLine(
"{0:0.000000}"
,
MaxAverageRatio(arr, K));
}
}