Pagini recente » Cod sursa (job #1185644) | Cod sursa (job #2489106) | Cod sursa (job #1269625) | Cod sursa (job #914093) | Cod sursa (job #1535334)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
long long int cost[100100], cerere[1001000], n, i, s, t, sum;
deque<int> minim;
int main()
{
fin>>n>>s>>t;
for (i = 1 ; i <= n ; i++) {
fin>>cost[i];
fin>>cerere[i];
}
for (i = 1 ; i <= n ; i++) {
while (minim.size() > 0 && (cost[minim.back()] + (i - minim.back()) * s ) > cost[i]) {
minim.pop_back();
}
minim.push_back(i);
while (minim.front() < i - t) {
minim.pop_front();
}
sum += cerere[i] * ( cost[minim.front()] + (i - minim.front()) * s );
}
fout<<sum;
return 0;
}