#include #include using std::cin; using std::cout; using std::vector; struct prodej { int den = -1, cena = 0; }; struct interval { long long vydelek = 0; int nakup = -1, prodej = -1; }; int main() { // Přečteme vstup int N, K; cin >> N >> K; vector dny(N); for(int i = 0; i < N; ++i) cin >> dny[i]; // Spočítáme suffixová maxima (od konce) /// pamatujeme si za kolik a kdy můžeme nejdráž prodat po daném dni vector nejlepsi_prodej(N); prodej max; for(int i = N-1; i >= 0; --i) { nejlepsi_prodej[i] = max; if(dny[i] > max.cena) max = {i, dny[i]}; } // Pro každý den zjistíme maximální výdělek, kdybychom tehdy nakoupili interval max_interval; for(int i = 0; i < N; ++i) { int pocet = K / dny[i]; long long vydelek = (long long)pocet * (nejlepsi_prodej[i].cena - dny[i]); if(vydelek > max_interval.vydelek) max_interval = {vydelek, i, nejlepsi_prodej[i].den}; } // Edge-case, když nemůžeme vydělat if(max_interval.vydelek == 0) cout << -1 << "\n"; // Vypíšeme maximálně výdělečný interval else cout << max_interval.nakup << " " << max_interval.prodej << "\n"; }