Pagini recente » Cod sursa (job #1358972) | Cod sursa (job #1321627) | Cod sursa (job #2255060) | Istoria paginii runda/cerculdeinfo-lectia5-paduri.heap.aib | Cod sursa (job #1184642)
#include <fstream>
using namespace std;
ifstream in("branza.in");
ofstream out("branza.out");
int n, s, t, st = 1, dr, c[100001], p[100001], d[100001];
long long suma;
void stanga(int x)
{
if(x-t==d[st]) st++;
}
void dreapta(int x)
{
while(st <= dr && c[x]<c[d[dr]]+s*(x-d[dr]))
dr--;
d[++dr]=x;
}
int main()
{
int i;
in>>n>>s>>t;
for(i=1;i<=n;i++)
{
in>>c[i]>>p[i];
stanga(i);
dreapta(i);
suma=suma+((long long)c[d[st]]+s*(i-d[st]))*p[i];
//out<<(c[d[st]]+s*(i-d[st]))*p[i]<<" ";
}
out<<suma;
return 0;
}