Pagini recente » Cod sursa (job #2758786) | Cod sursa (job #1552636) | Cod sursa (job #373156) | Cod sursa (job #138161) | Cod sursa (job #2500090)
#include <cstdio>
#include <algorithm>
using namespace std;
const int lim=100003;int u=lim-1;
long long n,s,t,nr[100003],cost[100003],dp[100003],suma;char sir[lim];
void next () {
++u;
if(u==lim) {
fread(sir,1,lim,stdin);
u=0;
}
}
void get (long long & x) {
x=0;
for(;sir[u]<'0' || sir[u]>'9';next());
for(;sir[u]>='0' && sir[u]<='9';next())
x=x*10+sir[u]-'0';
}
long long minim (long long nr1, long long nr2) {
if(nr1<nr2)
return nr1;
return nr2;
}
int main () {
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
get(n);get(s);get(t);
//scanf("%d%d%d", &n, &s, &t);
get(cost[1]);get(nr[1]);
//scanf("%d%d", &cost[1], &nr[1]);
dp[1]=nr[1]*cost[1];
for(int i=2;i<=n;++i) {
get(cost[i]);get(nr[i]);
//scanf("%d%d", &cost[i], &nr[i]);
dp[i]=nr[i]*cost[i];
for(int j=i-1;j>0 && i-j<=t;--j)
dp[i]=minim(dp[i],(i-j)*s*nr[i]+nr[i]*cost[j]);
}
for(int i=1;i<=n;++i)
suma+=dp[i];
printf("%lld", suma);
return 0;
}