Cod sursa(job #3251656)

Utilizator paull122Paul Ion paull122 Data 26 octombrie 2024 13:14:09
Problema Branza Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

#define VMAX 100000
#define NMAX 100000
#define LOG 20
#define INF (long long)(1e9)
#define BASE 10007
#define MOD 1000000009
#define ll  long long int

#define ADD 1000001

#define NIL 0

using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");

ll c[NMAX+1],p[NMAX+1];
int s,t;
int n;

deque<int> dq;
int main()
{
    fin >> n >> s >> t;
    for(int i=1;i<=n;i++)
    {
        fin >> c[i] >> p[i];
    }
    ll res=0;
    for(int i=1;i<=n;i++)
    {
        if(!dq.empty() && dq.front()<i-t)
        {
            dq.pop_front();
        }
        while(!dq.empty() && c[dq.back()] - dq.back()*s >= c[i] - i*s)
        {
            dq.pop_back();
        }
        dq.push_back(i);
        res +=  p[i]*c[dq.front()] + p[i]*s*(i-dq.front());
    }
    fout << res;

}