Pagini recente » Cod sursa (job #2863319) | Cod sursa (job #738436) | Cod sursa (job #1220787) | Cod sursa (job #2933773) | Cod sursa (job #1689004)
#include <fstream>
#include <iomanip>
#define nmax 30100
using namespace std;
class fractie {
public:
int Timp,Cost;
public:
fractie() {
Cost=Timp=0;
}
fractie operator+(fractie A) {
fractie Tmp;
Tmp.Cost=Cost+A.Cost;
Tmp.Timp=Timp+A.Timp;
return Tmp;
}
};
fractie Fractie[nmax];
int N,L,U;
double Answer;
double Raport(fractie X) {
return (1.0*X.Cost/X.Timp);
}
void solve() {
int i,Length;
fractie Sum,Best;
for(i=1;i<L;i++) {
Sum.Cost+=Fractie[i].Cost;
Sum.Timp+=Fractie[i].Timp;
}
Length=U;
for(i=L;i<=N;i++) {
Sum.Cost+=Fractie[i].Cost-Fractie[i-L].Cost;
Sum.Timp+=Fractie[i].Timp-Fractie[i-L].Timp;
if(Raport(Sum) < Raport(Best+Fractie[i]) && Length < U) {
Length++;
Best=Best+Fractie[i];
}
else {
Length=L;
Best=Sum;
}
if(Answer < Raport(Best))
Answer=Raport(Best);
}
}
void read() {
ifstream in("secv3.in");
in>>N>>L>>U;
for(int i=1;i<=N;i++)
in>>Fractie[i].Cost;
for(int i=1;i<=N;i++)
in>>Fractie[i].Timp;
}
void write() {
ofstream out("secv3.out");
out<<fixed<<setprecision(2)<<Answer<<'\n';
}
int main() {
read();
solve();
write();
return 0;
}