Pagini recente » Cod sursa (job #214291) | Cod sursa (job #2773373) | Borderou de evaluare (job #873669) | Cod sursa (job #59562) | Cod sursa (job #383238)
Cod sursa(job #383238)
#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 ;
inline void stanga ( int i )
{
if ( dq[st]-i == t )
++ st ;
}
void dreapta ( int i )
{
while ( branza[ dq[i] ].c < branza[ dq[dr] ].c + (dr-i)*s )
--dr;
dq[++dr]=i;
}
int main ( )
{
freopen ( "branza.in" , "r" , stdin ) ;
freopen ( "branza.out" , "w" , stdout );
int n ;
int 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;
dr=1;
dq[1]=1;
S += ( (long long)branza [ dq[st] ].c ) * branza[1].cump ;
for ( i = 2 ; 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 ;
}