Cod sursa(job #2287666)

Utilizator andreisontea01Andrei Sontea andreisontea01 Data 22 noiembrie 2018 12:06:22
Problema Branza Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 100005;
int p[MAXN], c[MAXN];
deque<int> dq;

int main()
{
    ifstream fin("branza.in");
    ofstream fout("branza.out");
    int n, s, t;
    fin >> n >> s >> t;
    for(int i = 1; i <= n; ++i)
        fin >> p[i] >> c[i];
    long long tot = 0;
    for(int i = 1; i <= n; ++i){
        while(!dq.empty() && p[i] <= p[dq.back()] + s * (i - dq.back()))
            dq.pop_back();
        if(!dq.empty() && i - dq.front() > t)
            dq.pop_front();
        while(!dq.empty() && p[dq.front()] + s * (i - dq.front()) > p[dq.front() + 1] + s * (i - dq.front() - 1))
            dq.pop_front();
        dq.push_back(i);
        tot += 1LL * c[i] * (p[dq.front()] + s * (i - dq.front()));
    }
    fout << tot;
    return 0;
}