Pagini recente » Cod sursa (job #1330966) | Cod sursa (job #140919) | Cod sursa (job #1218547) | Cod sursa (job #2113273) | Cod sursa (job #2888843)
#include <fstream>
#include <deque>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
int main()
{
int n, s, t, i;
long long suma = 0;
f >> n >> s >> t;
int pret[n], cantitate[n];
deque <int> brz;
for(i = 0; i < n; i++)
f >> pret[i] >> cantitate[i];
for (i = 0; i < t; i++)
{
while(!brz.empty() && pret[i] <= pret[brz.back()] + s * (i - brz.back()))
brz.pop_back();
brz.push_back(i);
suma = suma + cantitate[i] * (pret[brz.front()] + s * (i - brz.front()));
}
for (i = t; i < n; i++)
{
while (!brz.empty() && i - brz.front() > t)
brz.pop_front();
while(!brz.empty() && pret[i] <= pret[brz.back()] + s * (i - brz.back()))
brz.pop_back();
brz.push_back(i);
suma = suma + cantitate[i] * (pret[brz.front()] + s * (i - brz.front()));
}
g << suma;
return 0;
}