Pagini recente » Cod sursa (job #3228385) | Cod sursa (job #222262) | Cod sursa (job #2735711) | Cod sursa (job #2594285) | Cod sursa (job #67365)
Cod sursa(job #67365)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAXN 100005
int N, S, T, i, j, k;
int C[MAXN], P[MAXN], newp[MAXN];
void gen(void)
{
time_t t;
srand((unsigned) time(&t));
FILE *fo = fopen("branza.in", "w");
int N = 100000, S = 7, T = 11234, i;
// int N = 10, S = 5, T = 4, i;
fprintf(fo, "%d %d %d\n", N, S, T);
for (i = 0; i < N; i ++)
fprintf(fo, "%d %d\n", 1 + rand() % 10000001, 1+rand() % 10000001);
fclose(fo);
}
#define MAX(a, b) (a) > (b) ? (a) : (b)
int main(void)
{
// gen(); return 0;
freopen("branza.in", "r", stdin);
freopen("branza.out", "w", stdout);
scanf("%d %d %d", &N, &S, &T);
int i, j;
for (i = 0; i < N; i ++) scanf("%d %d", &C[i], &P[i]);
for (i = 0; i < N; i ++)
{
newp[i] = C[i];
for (j = MAX(0, i - T); j < i && i-j < 12000; j ++)
if (C[j] + (i - j) * S < newp[i])
newp[i] = C[j] + (i - j) * S;
}
long long sol = 0;
for (i = 0; i < N; i ++)
sol += (long long)newp[i] * (long long)P[i];
printf("%lld\n", sol);
return 0;
}