Cod sursa(job #1570387)

Utilizator redshadowIsarescu Mihai redshadow Data 16 ianuarie 2016 14:47:00
Problema Secventa 3 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>

using namespace std;

//variabile
int n, l, u;
vector<int> a[2];
vector<float> b;
ofstream out("secv3.out");

//prototipuri
void Citire();
float Calcule();
float NrMax(int m);
void Ordonare();

//main
int main()
{
    cout << setprecision(2) << fixed;
    Citire();
    for(int i = 0; i < n; i++){
        b.push_back((float)a[0][i]/a[1][i]);
    }
    Ordonare();
    out << Calcule();

    return 0;
}

//functii
void Citire(){
    int temp;
    ifstream in("secv3.in");
    in >> n >> l >> u;
    for(int i = 0; i < n; i++){
        in >> temp;
        a[0].push_back(temp);
    }
    for(int i = 0; i < n; i++){
        in >> temp;
        a[1].push_back(temp);
    }
}

float Calcule()
{
    vector<float> rezultate;
    float Max = 0.00f;
    for(int i = l; i <= u; i++){
        rezultate.push_back(NrMax(i));
    }
    for(int i = 0; i < rezultate.size(); i++)
        if(rezultate[i] > Max){
            Max = rezultate[i];
        }
    return Max;
}

float NrMax(int m)
{
    float c = 0.00f, d = 0.00f;
    for(int i = n-m; i < n; i++){
        c += a[0][i];
        d += a[1][i];
    }
    return c/d;
}

void Ordonare()
{
    for(int i = 0; i < n-1; i++){
        for(int j = i+1; j < n; j++)
            if(b[i] > b[j]){
                swap(b[i],b[j]);
                swap(a[0][i],a[0][j]);
                swap(a[1][i], a[1][j]);
            }
    }
}