xmoto

Time limit: 0.15s
Memory limit: 64MB
Input: xmoto.in
Output: xmoto.out

Ali Lalap se joacă Xmoto pe telefonul mobil. Scopul jocului este de a parcurge cu motocicleta circuitul din Gheorgheni. Traseul este format din N tronsoane. Consumul de benzină pentru tronsonul i (1 ≤ i ≤ N) este definit astfel:
aiv+kia_i \cdot v + k_i litri, dacă vviv ≤ v_i
biv+qib_i \cdot v + q_i litri, dacă v>viv > v_i ,
unde ai,bi,ki,qi,via_i, b_i, k_i, q_i, v_i sunt valori constante, iar v este viteza cu care se deplasează Ali Lalap pe acel tronson.

Pentru a nu forja motocicleta, lui Ali Lalap îi place să meargă cu viteză constantă şi ar vrea să ştie câte posibilităţi de a alege viteza cu care să parcurgă traseul există astfel încât să consume L litri de combustibil.

Cerinţa

Calculaţi pentru câte valori distincte ale vitezei consumul total va fi de L litri.

Date de intrare

Pe prima linie din fişierul de intrare xmoto.in se află numerele naturale N şi L. Următoarele N linii conţin fiecare cele patru numere reale ai,bi,ki,qia_i, b_i, k_i, q_i urmate de un număr întreg viv_i cu semnificaţiile din enunţ.

Date de ieşire

Fişierul de ieşire xmoto.out va conţine pe prima linie un singur număr M, reprezentând numărul maxim de valori ale vitezei cu care parcurgând în întregime traseul se obţine un consum total de L litri. Pe următoarele M linii se vor afişa M numere reale, distincte, cu cel puțin 6 zecimale şi sortate crescator w1,w2,...wMw_1, w_2, ... w_M, astfel încât dacă se parcurge traseul cu viteza wiw_i (1<=i<=M) să se obţină un consum total de L litri.

Restricţii şi precizări

  • N ≤ 50 000
  • numerele reale ai,bia_i, b_i aparţin intervalului [-100, 100]
  • 1  000  000ki,qi1  000  000-1 \; 000 \; 000 ≤ k_i, q_i ≤ 1 \; 000 \; 000
  • L ≤ 100 000 000
  • Pe fiecare tronson consumul va fi strict pozitiv pentru orice viteză din intervalul (0, 10 000]
  • Viteza maximă a motocicletei este de 10 000 km/h
  • Motocicleta rulează de la început până la sfârşit cu aceeaşi viteză (nu se pierde timp cu plecarea de pe loc, nu există accelerări/frânări )
  • Toate vitezele (viteza maximă, vitezele viv_i, viteza care trebuie determinată) sunt exprimate în aceeaşi unitate de măsură
  • Se consideră corectă orice soluţie în care vitezele diferă cu cel mult 10610^{-6} faţă de rezultatul corect.
  • Verificarea consumului total se va face cu o precizie de 10610^{-6} faţă de L.
  • Se garantează că M este finit.
  • Pentru determinarea corecta a lui M fără a calcula corect si cele M viteze se vor obtine 50% din punctajul pe test
  • Pentru 10% din teste N=1
  • Pentru 25% din teste ai,bi>0a_i, b_i > 0
  • Pentru 50% din teste N ≤ 1 000

Exemplu

xmoto.in

2 150
3.0 -2.0 2.0 22000.0 60
2.0 4.0 4.0 2.0 50

xmoto.out

1
28.800000

Explicaţii

28.8 ≤ 60 deci consumul pe primul tronson este x=3*28.8+2=88.4
28.8 ≤ 50 deci consumul pe al doilea tronson este y=2*28.8+4=61.6
Consumul total: x+y=88.4+61.6=150

Problem info

ID: 196

Editor: liviu

Author:

Source: ONI 2011 XI-XII: Ziua 2 Problema 3

Tags:

ONI 2011 XI-XII

Log in or sign up to be able to send submissions!