Pagini recente » Cod sursa (job #2260035) | Cod sursa (job #1485589) | Cod sursa (job #2971818) | Cod sursa (job #202930) | Cod sursa (job #943875)
Cod sursa(job #943875)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("branza.in");
ofstream out("branza.out");
const int N=100001;
int c[N],p[N],d[101],n,t,s,sum,st=1,dr,k;
void citire()
{
in>>n>>s>>t;
for(int i=1;i<=n;i++)
in>>c[i]>>p[i];
}
void stanga(int i)
{
if(i-d[st] == t)
st++;
}
void dreapta(int i)
{
while(st<=dr && c[i]<=c[d[dr]]+s*(i-d[dr]))
dr--;
}
int main()
{
citire();
for(int i=1;i<=n;i++)
{
if(i>t || c[i]<=c[d[dr]]+s*(i-d[dr]))
stanga(i);
dreapta(i);
d[++dr]=i;
//if(i>=t)
sum+=(c[d[st]]+s*(i-d[dr]))*p[i];
}
out<<sum;
return 0;
}