Pagini recente » Cod sursa (job #784836) | Cod sursa (job #1075367) | Cod sursa (job #2486973) | Cod sursa (job #3170348) | Cod sursa (job #1794130)
#include <fstream>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
int n, i, j, pd, t;
unsigned long long s, min1, pr[100005], cant;
int fr, bk, dq[100005];
int main() {
f >> n >> pd >> t;
fr = 1, bk = 0;
for (i = 1; i <= n; i++) {
f >> pr[i] >> cant;
while (fr <= bk && pr[dq[bk]] >= pr[i])
bk--;
dq[++bk] = i;
if (dq[fr] == i-t)
fr++;
min1 = 1e+12;
for (j = max(i-t, 1); j < i; j++)
min1 = min((pr[j] + (i-j)*pd), min1);
s += cant*min(min1, pr[i]);
}
g << s;
return 0;
}