Banii ușori se fac mulți, banii grei se fac puțini.
--- Evil 'Claus
Cu banii proaspăt primiți de la olimpiade, Alex a decis să investească în criptomonede. Inițial, el deține BTC și dorește să își crească această sumă. Pentru a realiza acest lucru, el va efectua schimburi pe parcursul următoarelor zile.
Pe platforma pe care o folosește Alex, există criptomonede, numerotate de la la , unde reprezintă BTC.
În fiecare zi, Alex primește o listă de schimburi disponibile sub forma unei matrici , unde înseamnă că poate schimba o sumă ce o detine , nu neaparat intreaga, din moneda în din moneda . Fiecare tranzacție durează exact o zi pentru a fi procesată, astfel încât Alex nu poate folosi banii schimbați în aceeași zi. Alex poate alege in cadrul unei zile sa nu efectueze niciun schimb.
Cerință
După cele zile, Alex dorește să rămână cu cât mai mult BTC. Determinați suma maximă de BTC cu care poate rămâne. Atenție, deoarece această valoare poate să nu fie un întreg, trebuie să afișați rezultatul cu o eroare maximă de (vezi secțiunea de output pentru detalii suplimentare și cod).
Date de intrare
Pe prima linie se vor afla și , numărul de zile, respectiv numărul de criptomonede. Vor urma matrici de linii a câte coloane. Pentru o matrice, numărul de pe linia și coloana reprezintă cursul în acea zi pentru schimburile din în . Matricile vor conține numere reale .
Date de ieșire
Afisați numărul real , care reprezintă suma maximă de BTC cu care poate rămâne Alex. Deoarece este un număr real, răspunsul vostru trebuie să aibă o eroare relativă de cel mult .
Se garantează că pentru răspunsul final: .
Fie răspunsul corect și răspunsul concurentului. Se vor acorda puncte dacă:
Pentru a asigura precizia calculelor, vă sugerăm să folosiți tipul de date double sau long double și să includeți următoarele în programul vostru:
#include <iomanip>
#include <iostream>
// ...
std::cout << std::fixed << std::setprecision(10) << x;
Restricții și precizări
- ;
- ;
- pentru orice și .
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 15 | |
| 2 | 15 | |
| 3 | 20 | |
| 4 | 50 | Fără restricții suplimentare |
Exemplu
stdin
1 3
2.0 1.0 2.5
1.4 1.0 3.14159265359
3.0 3.0 3.0
stdout
2.0000000000
Explicație
deci avem o singură zi de schimburi. Vom denumi moneda ETH și moneda TON pentru a face explicațiile mai ușoare. Schimburile posibile aici sunt:
BTC-> 2.0BTC(nu vom comenta asupra eticii investițiilor lui Alex)BTC-> 1.0ETHBTC-> 2.5TON
ETH-> 1.4BTCETH-> 1.0ETHETH-> 3.14159265359TON
TON-> 3.0BTCTON-> 3.0ETHTON-> 3.0TON
Atenție!, O tranzacție ia h până se efectuează, deci Alex nu poate folosi tranzacții în aceeași zi. Deci NU poate BTC -> ETH -> BTC cu prețurile dintr-o singură zi. Totuși, poate face BTC -> ETH într-o zi și ETH -> BTC într-o zi ulterioară. In acest exemplu solutia optima e sa ia BTC -> 2 BTC