Pagini recente » Cod sursa (job #2859606) | Cod sursa (job #2917555) | Cod sursa (job #724451) | Cod sursa (job #22988) | Cod sursa (job #2466603)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
struct chestie
{
long long val, poz;
};
deque<chestie> dq;
long long n, s, t;
void add(long long C, long long P, long long i)
{
long long curV = C * P;
while(!dq.empty() && P * dq.back().val + P * (i - dq.back().poz) * s > curV)
dq.pop_back();
dq.push_back({C, i});
}
int main()
{
fin >> n >> s >> t;
long long rez = 0;
for(long long i = 1; i <= n; ++i)
{
long long C, P;
fin >> C >> P;
if(i > t){
if(dq.front().poz == i - t - 1)
dq.pop_front();
}
add(C, P, i);
rez += (P * dq.front().val + P * (i - dq.front().poz) * s);
}
fout << rez << '\n';
return 0;
}