Pagini recente » Cod sursa (job #1855821) | Cod sursa (job #3140383) | Cod sursa (job #804251) | Cod sursa (job #1361362) | Cod sursa (job #2174630)
#include <stdio.h>
#include <stdlib.h>
#define INFINIT 20000000
struct deq {
int cost, tp;
} dq[100000];
int prim = 0, ultim = 0;
int main() {
FILE *fin, *fout;
int n, s, t, i, c, p, j;
long long ctot = 0LL, aux;
fin = fopen( "branza.in", "r" );
fout = fopen( "branza.out", "w" );
fscanf( fin, "%d%d%d", &n, &s, &t );
dq[0].cost = INFINIT;
for ( i = 0; i < n; i++ ) {
fscanf( fin, "%d%d", &c, &p );
while ( ultim >= 0 && c <= dq[ultim].cost )
ultim--;
dq[ultim + 1].cost = c;
dq[ultim + 1].tp = t;
ultim++;
aux = dq[prim].cost;
aux *= p;
ctot += aux;
for ( j = prim; j <= ultim; j++ ) {
dq[j].cost += s;
dq[j].tp--;
}
if ( dq[prim].tp == -1 )
prim++;
}
fprintf( fout, "%lld", ctot );
fclose( fin );
fclose( fout );
return 0;
}