Cod sursa(job #2583070)
| Utilizator | Data | 17 martie 2020 18:47:25 | |
|---|---|---|---|
| Problema | Branza | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <fstream>
using namespace std; ifstream in ("branza.in"); ofstream out ("branza.out"); const int VM = 1e5; int d [VM + 1], pret [VM + 1]; int main() { long long n, s, t; long long cant, rez, st, dr; in >> n >> s >> t; rez = dr = 0; st = 1; for (int i = 1; i <= n; i ++) { in >> pret [i] >> cant; if (st <= dr && i - d [st] == t + 1) st ++; while (st <= dr && pret [i] <= pret [d [dr]] + s * (i - d [dr])) dr --; d [++ dr] = i; rez += cant * (pret [d [st]] + s * (d [dr] - d [st])); } out << rez; return 0; }
