Pagini recente » Cod sursa (job #1314499) | Cod sursa (job #2596575) | Cod sursa (job #2044591) | Cod sursa (job #1832887) | Cod sursa (job #2799089)
#include <stdio.h>
#include <deque>
std::deque<std::pair<long long, long long> > q;
long long n, k, s;
int main()
{
FILE *fin = fopen( "branza.in", "r" );
fscanf( fin, "%lld%lld%lld", &n, &s, &k );
long long rez = 0, cost, kg;
for( long long i = 0; i < n; i++ ) {
fscanf( fin, "%lld%lld", &cost, &kg );
while( !q.empty() && q.back().first + ( i - q.back().second ) * s > cost )
q.pop_back();
q.push_back( { cost, i } );
if( q.front().second + 1 == i - k )
q.pop_front();
rez += kg * ( q.front().first + ( i - q.front().second ) * s );
}
fclose( fin );
FILE *fout = fopen( "branza.out", "w" );
fprintf( fout, "%lld\n", rez );
fclose( fout );
return 0;
}