Pagini recente » Istoria paginii utilizator/vipioana | Cod sursa (job #473564) | Istoria paginii utilizator/therain3r | Istoria paginii utilizator/forsakenawe | Cod sursa (job #3127130)
#include <fstream>
#include <vector>
#include <deque>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
int main()
{
int n, s, t, ans = 0;
f >> n >> s >> t;
deque <int> deq;
vector <int> cost;
vector <int> pret;
cost.resize(2 * n + 1);
pret.resize(2 * n + 1);
for (int i = 1; i <= n; i++)
{
f >> pret[i] >> cost[i];
while (deq.empty() == false && i - deq.front() > t)
{
deq.pop_front();
}
while (deq.empty() == false && ((pret[deq.back()] + s * (i - deq.back())) > pret[i]))
{
deq.pop_back();
}
deq.push_back(i);
ans += cost[i] * pret[deq.front()] + s * (i - deq.front()) * cost[i];
}
g << ans;
return 0;
}