Cod sursa(job #1470315)

Utilizator om6gaLungu Adrian om6ga Data 10 august 2015 20:20:41
Problema Secventa 3 Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <stdio.h>

#define NMAX 30005

int N, L, U;
short int cost[NMAX], time[NMAX];
int i, j, cost_sum[NMAX], time_sum[NMAX], S1, S2, s1, s2, s;
long long int a1, a2;
FILE *in, *out;
float rez;

void citire()
{
    in  = freopen("secv3.in", "r", stdin);
    out = freopen("secv3.out", "w", stdout);
    scanf("%d %d %d\n", &N, &L, &U);
    for (i = 1; i <= N; i++)
    {
        scanf("%hd", &cost[i]);
        /*        
         *        cost_sum[i] = cost[1] + cost[2] + ... + cost[i]
         * Obs. : cost_sum[i] - cost_sum[j] = cost[j+1] + ... + cost[i], ptr i >= j+1
         */
        cost_sum[i] = cost_sum[i-1] + cost[i];
    }
    for (i = 1; i <= N; i++)
    {
        scanf("%hd", &time[i]);
        time_sum[i] = time_sum[i-1] + time[i];       /* analog cost_sum[] */
    }
}


int main()
{
    citire();
    //print();   
    
    S1 = 0;
    S2 = 1;
    for (i = L; i <= U; i++)      //i = seq len
        for (j = i; j <= N; j++)
        {
            a1 = S1; a1 *= (s2 = time_sum[j]-time_sum[j-i]);
            a2 = S2; a2 *= (s1 = cost_sum[j]-cost_sum[j-i]);
            if (a1 < a2)
                S1 = s1, S2 = s2;
        }
    
    printf("%.2f\n", (float)((float)S1)/((float)S2));

    fclose(in);
    fclose(out);
    return 0;
}