Pagini recente » Cod sursa (job #2335203) | Cod sursa (job #447184) | Cod sursa (job #972135) | Cod sursa (job #572082) | Cod sursa (job #1939509)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
int n,s,t,i;
long long d[100002];
int p,u;
long long sol;
pair <long long, long long> c[100002];
int main()
{
fin >> n >> s >> t;
for (i=1; i<=n; i++)
fin >> c[i].first >> c[i].second;
d[1] = 1;
p = 1;
u = 1;
sol += c[1].first*c[1].second;
for (i=2; i<=n; i++)
{
while (p <= u && c[i].first <= c[d[u]].first+s*(i-d[u]))
u--;
d[++u] = i;
if (i-d[p] == t+1)
p++;
sol += (c[d[p]].first+(i-d[p])*s)*c[i].second;
}
fout << sol;
return 0;
}