Cod sursa(job #2053127)

Utilizator robertispasIspas Robert robertispas Data 31 octombrie 2017 15:39:03
Problema Branza Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>

using namespace std;

ifstream cin("branza.in");
ofstream cout("branza.out");

const int N = 100005;
long long n, s, t, d[N], st=1, dr, sum;

struct fint
{
    long long c,p;
};
fint v[N];

int main()
{
    cin>>n>>s>>t;
    for(int i = 1; i <= n; i++)
        cin>>v[i].c>>v[i].p;
    t++;
    for(int i = 1; i <= n; i++)
    {
        if(st <= dr && d[st] == i-t)
            st++;
        while(st <= dr && v[i].c <= v[d[dr]].c + s*(i - d[dr]))
            dr--;
        d[++dr] = i;
        sum += (long long)v[i].p*(v[d[st]].c + s*(i - d[st]));
    }
    cout<<sum;
    return 0;
}