Pagini recente » Cod sursa (job #545972) | Cod sursa (job #152862) | Cod sursa (job #41845) | Cod sursa (job #940418) | Cod sursa (job #385615)
Cod sursa(job #385615)
#include<cstdio>
#include<cstdio>
struct chestie { int c , cump ; } ;
int t , s ;
const int NMAX = 1<<17;
int dq [NMAX];
chestie branza [ NMAX ] ;
int st , dr=0 ;
inline void stanga ( int i )
{
if ( i - dq[st] > t )
++ st ;
}
void dreapta ( int i )
{
while ( st <= dr && ( branza[ i ].c <= ( branza[ dq[dr] ].c + (i-dq[dr])*s) ) )
--dr;
dq[++dr]=i;
}
int main ( )
{
freopen ( "branza.in" , "r" , stdin ) ;
freopen ( "branza.out" , "w" , stdout );
int n ;
long long S = 0 ;
int i ;
scanf ( "%d%d%d" , & n , & s , & t ) ;
for ( i = 1 ; i <= n ; ++ i )
{
scanf ( "%d%d" , & branza[i].c , &branza[i].cump ) ;
}
st=1;
for ( i = 1 ; i <= n ; ++ i )
{
stanga (i) ;
dreapta (i) ;
S += (long long )( branza [ dq[st] ].c + (i-dq[st])*s ) * branza[i].cump ;
}
printf ( "%lld\n" , S ) ;
return 0 ;
}