Pagini recente » Cod sursa (job #2986630) | Cod sursa (job #1030513) | Cod sursa (job #2144078) | Cod sursa (job #2047003) | Cod sursa (job #67712)
Cod sursa(job #67712)
#include <stdio.h>
#define infile "branza.in"
#define outfile "branza.out"
#define min(x,y) (x)<(y)?(x):(y)
#define nmax 100000
long n, t, i, c[nmax], p[nmax], rez[nmax];
int s;
void readdata()
{
FILE *fin=fopen(infile, "r");
fscanf(fin, "%ld %d %ld\n", &n, &s, &t);
for (i=1; i<=n; i++)
fscanf(fin, "%ld %ld", &c[i], &p[i]);
fclose(fin);
}
void writedata()
{
FILE *fout=fopen(outfile, "w");
fprintf(fout, "%ld", rez[n]);
fclose(fout);
}
void solve()
{
long minim, j, temp;
rez[1]=c[1]*p[1];
for (i=2; i<=n; i++)
{
minim=0;
for (j=1; j<=t && i-j>0; j++)
{
temp=c[i-j]*p[i]+p[i]*s*(j);
if (minim==0 || temp<minim) minim=temp;
}
rez[i]=min(minim,c[i]*p[i]);
rez[i]+=rez[i-1];
}
}
int main()
{
readdata();
solve();
writedata();
return 0;
}