Pagini recente » Cod sursa (job #1319769) | Cod sursa (job #946498) | Cod sursa (job #1100052) | Cod sursa (job #3132968) | Cod sursa (job #2046211)
#include <fstream>
#define MAX_N 100000
int price[MAX_N], weight[MAX_N], dp[MAX_N], dw[MAX_N], d[MAX_N];
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
int main()
{
int n, s, t, st, dr;
long long S;
fin >> n >> s >> t;
st = 1;
dr = 0;
S = 0;
for(int i = 0 ; i < n ; i++){
fin >> price[i] >> weight[i];
if(i >= t && d[st] == i - t) st++;
while(st <= dr && price[i] < dp[dr] + (i - d[dr]) * s) dr--;
dp[++dr] = price[i];
d[dr] = i;
S += (dp[st] + (i - d[st]) * s) * weight[i];
}
fout << S;
return 0;
}