Cod sursa(job #2606979)

Utilizator alex_benescuAlex Ben alex_benescu Data 28 aprilie 2020 23:09:51
Problema Secventa 3 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#define NMAX 30003
#define EPS 0.001
#define MAXVAL 33554432
using namespace std;
int vcost[NMAX], vtimp[NMAX];
int main() {
  freopen ( "secv3.in", "r", stdin );
  freopen ( "secv3.out", "w", stdout );
  int n, lmin, lmax, i, scost, stimp, f;
  float dr, st, mij;

  scanf ( "%d%d%d", &n, &lmin, &lmax );
  for ( i = 0; i < n; i ++ )
    scanf ( "%d", &vcost[i] );
  for ( i = 0; i < n; i ++ )
    scanf ( "%d", &vtimp[i] );

  st = 0;
  dr = MAXVAL;
  while ( dr - st > EPS ) {
    mij = (float) ( dr + st ) / 2;
    scost = stimp = 0;

    for ( i = 0; i < lmin; i ++ ) {
      scost += vcost[i];
      stimp += vtimp[i];
    }
    if ( (float) scost / stimp < mij )
      f = 0;
    else
      f = 1;
    for ( i = lmin; i < n; i ++ ){
      scost = scost - vcost[i - lmin] + vcost[i];
      stimp = stimp - vtimp[i - lmin] + vtimp[i];
      if ( (float) scost / stimp > mij )
        f = 1;
    }

    if ( f == 0 )
      dr = mij;
    else
      st = mij;
  }

  printf ( "%f\n", mij );
  return 0;
}