Pagini recente » Cod sursa (job #1932058) | Cod sursa (job #2683736) | Cod sursa (job #1934430) | Cod sursa (job #153242) | Cod sursa (job #2543934)
#include <iostream>
#include <fstream>
#include <deque>
std::ifstream f("branza.in");
std::ofstream g("branza.out");
const int NMAX = 100'005;
int n,s,t,v[NMAX],c[NMAX],p[NMAX],sol;
std::deque<int>d;
//c[] - costul de productie 1 kg
//p[] - cantitatea pentru o anumita saptamana
int main(){
f >> n >> s >> t;
for(int i = 1;i <= n;++i)
f >> c[i] >> p[i];
sol += c[1] * p[1];
d.push_back(1);
for(int i = 2;i <= n;++i){
while(!d.empty() && c[i] <= (i - d.back()) * s + c[d.back()])
d.pop_back();
d.push_back(i);
if(i - d.front() > t)
d.pop_front();
sol = sol + ( (i - d.front()) * s + c[d.front()] * p[i]);
}
g << sol;
return 0;
}