Cod sursa(job #943855)

Utilizator ard_procesoareLupicu ard_procesoare Data 26 aprilie 2013 17:28:44
Problema Branza Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#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;
}