Pagini recente » Cod sursa (job #1412892) | Cod sursa (job #1196274) | Cod sursa (job #2063132) | Cod sursa (job #1664126) | Cod sursa (job #1491445)
#include <stdio.h>
#include <stdlib.h>
int st, dr, t, s;
struct deck{
int sap, pret;
} deque[100000];
void stanga(int sp){
if(sp-deque[st].sap>t)
st++;
}
void dreapta(int sp, int pr){
while(dr>=st && pr<=deque[dr].pret+(sp-deque[dr].sap)*s)
dr--;
dr++;
deque[dr].sap=sp;
deque[dr].pret=pr;
}
int main()
{
int p, c, n, i;
long long total;
FILE *fi=fopen("branza.in", "r"), *fo=fopen("branza.out", "w");
fscanf(fi, "%d%d%d", &n, &s, &t);
st=0;
total=0;
dr=-1;
for(i=0;i<n;i++){
fscanf(fi, "%d%d", &p, &c);
dreapta(i,p);
stanga(i);
total=total+1LL*(deque[st].pret+(i-deque[st].sap)*s)*c;
}
fprintf(fo, "%lld", total);
fclose(fi);
fclose(fo);
return 0;
}