Pagini recente » Cod sursa (job #332103) | Cod sursa (job #57819) | Cod sursa (job #263751) | Cod sursa (job #2911872) | Cod sursa (job #2578708)
#include <fstream>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
const int N=100001;
pair <int,int>p[N];
pair <int,int> dq[N];
int n,s,t,a,b,st=1,dr,ans;
int main()
{
fin>>n>>s>>t;
for(int i=1;i<=n;i++)
{
fin>>p[i].first>>p[i].second;
}
// ans=p[1].first*p[1].second;
// dq[++dr]=p[1].first;
for(int i=1;i<=n;i++)
{
if(i-dq[st].second>t)
{
st++;
}
while(st<=dr&&dq[dr].first+s*(i-dq[dr].second)>=p[i].first)
{
dr--;
}
if(st>dr)
{
dq[++dr].first=p[i].first;
dq[dr].second=i;
ans+=p[i].second*dq[dr].first+s*(i-dq[dr].second);
}
else
{
ans+=p[i].second*dq[dr].first+s*(i-dq[dr].second)*p[i].second;
dq[++dr].first=p[i].first;
dq[dr].second=i;
}
}
fout<<ans;
return 0;
}