Cod sursa(job #2405128)
| Utilizator | Data | 13 aprilie 2019 23:00:02 | |
|---|---|---|---|
| Problema | Branza | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <fstream>
#include <deque>
#define val first
#define poz second
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
deque < pair <long long, long long> > deq;
long long n, pretdep, zilemax, pret, cant, i, sol;
int main()
{
f>>n>>pretdep>>zilemax;
for( i=1; i<=n; i++){
f >> pret >> cant;
while ( deq.empty()==false && deq.front().val + pretdep*(i-deq.front().poz) >= pret) deq.pop_back();
deq.push_back (make_pair (pret, i));
if(deq.empty()==false && deq.front().poz==i-zilemax) deq.pop_front() ;
sol+=cant*deq.front().val+cant*pretdep*(i-deq.front().poz);
}
g<<sol;
return 0;
}