Pagini recente » Monitorul de evaluare | Cod sursa (job #1184150) | Clasament dupa rating | Cod sursa (job #1661571) | Cod sursa (job #147989)
Cod sursa(job #147989)
#include<stdio.h>
#define maxn (1<<19)
long first = 1,last = 0;
long exp[maxn],v[maxn];
void add(long a,long b)
{
while(v[last] >= a && first <= last)
{
last--;
}
v[++last] = a;
exp[last] = b;
}
int main()
{
long n,cost,t;
long long s=0;
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
scanf("%ld %ld %ld",&n , &cost, &t);
for( long i = 1; i <= n; ++i)
{
long a,cat;
scanf("%ld %ld",&a,&cat);
if( exp[first] == i)
{
first++;
}
a+= (long long )cost * (n-i);
add(a,i+t+1);
s+= (v[first] - ( long long ) cost * (n-i) )*cat;
}
printf("%ld\n",s);
return 0;
}