Pagini recente » Cod sursa (job #343567) | Cod sursa (job #769930) | Cod sursa (job #2906990) | Diferente pentru implica-te/arhiva-educationala intre reviziile 20 si 19 | Cod sursa (job #341248)
Cod sursa(job #341248)
#include<cstdio>
#define N 100001
int v[N],x,n,t,s,d[N],u,p,total;
void citire()
{
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
scanf("%d%d%d",&n,&s,&t);
for (int i=1; i<=t; ++i)
{
scanf("%d%d",&v[i],&x);
int y=s*(i-d[u-1]);
while(u!=p&v[i]<=v[d[u-1]]+y)
--u;
d[u++]=i;
total+=x*(v[d[p]]+s*(i-d[p]));
}
for (int i=t+1; i<=n; ++i)
{
scanf("%d%d",&v[i],&x);
int g=i-d[p];
if (g==t)
++p;
int y=s*(i-d[u-1]);
while(u!=p&v[i]<=v[d[u-1]]+y)
--u;
d[u++]=i;
total+=x*(v[d[p]]+s*(i-d[p]));
}
printf("%d",total);
}
int main()
{
citire();
return 0;
}