Pagini recente » Cod sursa (job #712205) | Cod sursa (job #190618) | Cod sursa (job #615145) | Cod sursa (job #550072) | Cod sursa (job #962296)
Cod sursa(job #962296)
#include <stdio.h>
int a[100000],b[100000],d[100000];
int dreapta(int st, int dr, int s)
{
int i;
i=dr-1;
while(a[i]+s*(d[dr]-d[i])>a[dr]&&i>=st) i--;
i++;
return i;
}
int main()
{
FILE *in,*out;
int st=0,dr=-1,n,s,t,i,cdr;
long long rez=0;
in=fopen("branza.in","r");
out=fopen("branza.out","w");
fscanf(in,"%d%d%d",&n,&s,&t);
for(i=0;i<n;i++)
{
fscanf(in,"%d",&a[++dr]);
fscanf(in,"%d",&b[dr]);
d[dr]=i;
cdr=dr;
if(i-d[st]>t) st++;
if(i!=0)
{
dr=dreapta(st,dr,s);
a[dr]=a[cdr];
d[dr]=d[cdr];
b[dr]=b[cdr];
}
rez+=(long long)b[dr]*((a[st]+(d[dr]-d[st])*s));
}
fprintf(out,"%lld",rez);
return 0;
}