Pagini recente » Cod sursa (job #750056) | Cod sursa (job #2375843) | Cod sursa (job #2382136) | Cod sursa (job #5008) | Cod sursa (job #943869)
Cod sursa(job #943869)
#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*k)
{
dr--;
k++;
}
if(st>dr)
k=0;
}
int main()
{
citire();
for(int i=1;i<=n;i++)
{
k=1;
if(i>t || c[i]<=c[d[dr]]+s*k)
stanga(i);
dreapta(i);
d[++dr]=i;
//if(i>=t)
sum+=(c[d[st]]+s*k)*p[i];
}
out<<sum;
return 0;
}