Cod sursa(job #2456898)

Utilizator Neri-kunNeri-kun Neri-kun Data 15 septembrie 2019 19:33:42
Problema Secventa 3 Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<fstream>
#include<algorithm>
using namespace std;
typedef struct Sequence {
	int current_cost;
	int current_time;
	float current_ratio;
	float max_ratio;
	int* cost;
	int* time;

}Sequence;
ifstream fin("secv3.in");
FILE* g = fopen("secv3.out", "w");
int main() {
	int N, U, L;
	int starting_point;
	Sequence seq;
	fin>>N>>L>>U;
	seq.cost = new int[N];
	seq.time = new int[N];
	seq.max_ratio = 0;
	for (int i = 0; i < N; i++)
		fin>>seq.cost[i];
	for (int i = 0; i < N; i++)
		fin>>seq.time[i];
	for (int j = L; j <= U; j++) {
		seq.current_ratio = 0.00f;
		starting_point = 0;
		seq.current_cost = 0;
		seq.current_time = 0;
		for (int i = 0; i < j; i++) {
			seq.current_cost += seq.cost[i];
			seq.current_time += seq.time[i];
		}
		seq.current_ratio = (float)(seq.current_cost)/ float(seq.current_time);
		seq.max_ratio = max( seq.current_ratio,seq.max_ratio);
		for (int i = j; i < N; i++) {
			seq.current_cost += (seq.cost[i] - seq.cost[starting_point]);
			seq.current_time += (seq.time[i] - seq.time[starting_point]);
			seq.current_ratio = (float)(seq.current_cost) / (float)(seq.current_time);
			seq.max_ratio = max(seq.current_ratio, seq.max_ratio);
			starting_point++;
		}
	}
	fprintf(g, "%0.2f", seq.max_ratio);
	return 0;
}