Pagini recente » Cod sursa (job #2136366) | Cod sursa (job #2379045) | Cod sursa (job #179910) | Cod sursa (job #873732) | Cod sursa (job #2036150)
#include <stdio.h>
#include <stdlib.h>
int v[100000], d[100000];
int main(){
FILE *fin, *fout;
int n, k, i, st, dr, pret, cant;
long long s;
fin=fopen("branza.in", "r");
fout=fopen("branza.out", "w");
fscanf(fin, "%d%d%d", &n, &pret, &k);
st=0;
dr=-1;
s=0;
for(i=0;i<n;i++){
fscanf(fin, "%d%d", &v[i], &cant);
if(st<=dr && d[st]==i-k)
st++;
while(st<=dr && v[i]<=v[d[dr]]+(i-d[dr])*pret)
dr--;
d[++dr]=i;
s+=(long long)(v[d[st]]+(i-d[st])*pret)*(long long)cant;
printf("%lld\n", (long long)(v[d[st]]+(i-d[st])*pret)*(long long)cant);
}
fprintf(fout, "%lld", s);
fclose(fin);
fclose(fout);
return 0;
}