Pagini recente » Cod sursa (job #898156) | Cod sursa (job #322867) | Cod sursa (job #2852209) | Cod sursa (job #2813374) | Cod sursa (job #1495049)
#include <stdio.h>
#include <stdlib.h>
struct branza {
int cost, timp;
} v[100000];
int main()
{
FILE *fin, *fout;
int n, s, t, i, b, e, c, p;
long long tot;
fin=fopen("branza.in", "r");
fscanf(fin, "%d%d%d", &n, &s, &t);
b=e=0; tot=0LL; v[0].timp=i;
for(i=0; i<n; i++){
fscanf(fin, "%d%d", &c, &p);
while(i-v[b].timp>t)
++b;
while(e>b && 1LL*(i-v[e-1].timp)*s+v[e-1].cost>=c)
--e;
v[e].timp=i; v[e++].cost=c;
tot+=1LL*p*((i-v[b].timp)*s+v[b].cost);
}
fclose(fin);
fout=fopen("branza.out", "w");
fprintf(fout, "%lld\n", tot);
fclose(fout);
return 0;
}