Pagini recente » Cod sursa (job #680774) | Cod sursa (job #1871499) | Cod sursa (job #818573) | Cod sursa (job #429224) | Cod sursa (job #2889220)
#include <iostream>
#include<fstream>
#include<deque>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
deque <int> coada;
int main()
{
long long N,S,T,suma=0,i,cantitate;
f>>N>>S>>T;
long long pret[N+1];
for (i=1; i<=N; i++)
{
f>>pret[i]>>cantitate;
while(coada.size()>0 && coada.front()<i-T)
coada.pop_front();
while(coada.size()>0 && ((i-coada.back())*S +pret[coada.back()])>pret[i])
coada.pop_back();
coada.push_back(i);
suma+=cantitate*(pret[coada.front()]+S*(i-coada.front()));
}
g<<suma;
f.close();
g.close();
return 0;
}