Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Diferente pentru preoni-2008/runda-finala/regulament intre reviziile 3 si 2 | Monitorul de evaluare | Cod sursa (job #943856)
Cod sursa(job #943856)
#include <fstream>
using namespace std;
ifstream fin ("branza.in");
ofstream fout ("branza.out");
#define NMAX 5000005
int deque[NMAX],k,st=1,dr,n,g[NMAX],v[NMAX],s,j;
long long sum;
void tipar()
{
for(int i=st;i<=dr;i++)
fout<<v[deque[i]] + s* ( j - deque[i] ) << " " ;
fout<<"\n";
}
void read()
{
fin>>n>>s>>k;
for(int i=1;i<=n;i++)
fin>>v[i]>>g[i];
}
void stanga(int poz)
{
if(poz - deque[st] == k)
st++;
}
void dreapta(int poz)
{
while(st <= dr && v[poz] + s * ( j - poz ) <= v[deque[dr]] + s * (j - deque[dr] ))
dr--;
}
void solve()
{
for(int i=1;i<=n;i++)
{
j=i;
if(i>k) stanga(i);
dreapta(i);
deque[++dr] = i;
sum+= (v[deque[st]] + s * ( j - deque[st] )) * g[i];
//tipar();
}
}
int main()
{
read();
solve();
fout<<sum;
}