Pagini recente » Cod sursa (job #2188979) | Cod sursa (job #2195566) | Cod sursa (job #329098) | Cod sursa (job #3148043) | Cod sursa (job #3126483)
//#include <iostream>
#include <fstream>
#include<deque>
using namespace std;
std::ifstream cin("branza.in");
std::ofstream cout("branza.out");
struct sapt{
long long int cost,pozitie;
sapt(long long int c,long long int p):cost(c),pozitie(p){};
~sapt() = default;
};
int main() {
deque<sapt> minim;
long long int nr_sapt, cost_depozitare,timp_depozitare,cost_total=0;
cin>>nr_sapt>>cost_depozitare>>timp_depozitare;
for(long long int i = 0; i < nr_sapt; i++){
long long int cost_productie,vanzare;
cin>>cost_productie>>vanzare;
if(!minim.empty() && minim.back().cost+cost_depozitare*(i-minim.back().pozitie) > cost_productie)minim.pop_back();
minim.push_back(sapt(cost_productie,i));
while(i-minim.front().pozitie >= timp_depozitare)minim.pop_front();
cost_total+=vanzare * minim.front().cost + vanzare* cost_depozitare * (i-minim.front().pozitie);
}
cout<<cost_total;
return 0;
}