Pagini recente » Cod sursa (job #2248912) | Cod sursa (job #1028822) | Cod sursa (job #830727) | Cod sursa (job #2471461) | Cod sursa (job #1538509)
#include <fstream>
#include <deque>
#define f first
#define s second
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
deque< pair<int,int> > d;
int n,sapt,chirie,cost,cant,i,mini;
long long int sum;
int main()
{
fin>>n>>chirie>>sapt;
fin>>cost>>cant;
sum += cost * cant;
d.push_back(make_pair(cost, 1));
for(i = 2; i <= n; ++i){
fin>>cost>>cant;
if(!d.empty())
while(cost < d.front().f + (i - d.front().s) * chirie){
d.pop_front();
if(d.empty())
break;
}
if(!d.empty())
if(d.front().s + sapt < i)
d.pop_front();
d.push_back(make_pair(cost, i));
mini = min(cost, d.front().f + (i - d.front().s) * chirie);
sum += mini * cant;
}
fout<<sum;
return 0;
}