Pagini recente » Cod sursa (job #1173841) | Cod sursa (job #1145613) | Cod sursa (job #2261565) | Monitorul de evaluare | Cod sursa (job #943855)
Cod sursa(job #943855)
#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;
}