Pagini recente » Cod sursa (job #2613294) | Cod sursa (job #1605960) | Cod sursa (job #1489576) | Cod sursa (job #1550461) | Cod sursa (job #2887461)
#include <iostream>
#include <fstream>
std::ifstream f("branza.in");
std::ofstream g("branza.out");
int N, S, T, c[100001], p[100001], cumparat[100001], cost, i, j, t1;
int min1()
{
int k, min2=999999;
for(k=i+1; k<=j-1; k++)
{
if(c[k] + S*(j-k) < min2)
min2 = c[k] + S*(j-k);
}
return min2;
}
int main()
{
f>>N>>S>>T;
for(i=1; i<=N; i++)
f>>c[i]>>p[i];
for(i=1; i<N; i++)
{
if(cumparat[i] == 0)
{
cost += c[i]*p[i];
cumparat[i] = 1;
}
if(i+T <= N)
t1 = i+T;
else t1 = N;
for(j=i+1; j<=t1; j++)
if(c[i] + S*(j-i) <= c[j] && cumparat[j]==0)
if(c[i] + S*(j-i) < min1())
{
cost += (c[i] + S*(j-i))*p[j];
cumparat[j] = 1;
}
}
if(cumparat[i] == 0)
{
cost += c[i]*p[i];
cumparat[i] = 1;
}
g<<cost;
}