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.0ETH
BTC
-> 2.5TON
ETH
-> 1.4BTC
ETH
-> 1.0ETH
ETH
-> 3.14159265359TON
TON
-> 3.0BTC
TON
-> 3.0ETH
TON
-> 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