Pagini recente » Cod sursa (job #125335) | Cod sursa (job #3134423) | Cod sursa (job #696015) | Cod sursa (job #2493382) | Cod sursa (job #911394)
Cod sursa(job #911394)
#include <cstdio>
struct sp
{
long long cost;
long long count;
} d[100100];
int s,t;
long long sol;
int beg;
int end;
void pop_front()
{
sol+=d[beg].cost*d[beg].count*1LL;
beg++;
}
void print()
{
for(int i=beg;i<=end;i++)
printf("%d ",d[i].cost);
printf("\n");
for(int i=beg;i<=end;i++)
printf("%d ",d[i].count);
printf("\n");
printf("\n");
}
int main()
{
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
int n;
scanf("%d%d%d",&n,&s,&t);
beg=1;
for(int i=1;i<=n;i++)
{
long long a,b;
scanf("%lld%lld",&a,&b);
d[++end].cost=a;
d[end].count=b;
if(end-beg+1>t)
{
pop_front();
}
//print();
while(end>beg &&
1LL*d[beg].cost*b+(end-beg)*s*b>1LL*d[end].cost*d[end].count)
{
pop_front();
}
if(beg<end)
{
d[beg].count+=d[end].count;
d[end].count=0;
sol+=1LL*(end-beg)*s*b;
}
//print();
}
while(beg<=end)
pop_front();
printf("%lld",sol);
return 0;
}