Cod sursa(job #3251729)

Utilizator Allie28Radu Alesia Allie28 Data 26 octombrie 2024 17:38:12
Problema Branza Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <climits>

using namespace std;

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

const int LMAX = 30005;

deque<pair<long long, long long>> dqmin;

int main() {
    int n, i, c, s, t;
    long long sol, x;
    fin>>n>>s>>t;
    sol = 0;
    for (i = 0; i < n; i++) {
        fin>>x>>c;
        while (!dqmin.empty() && dqmin.back().first + 1LL*s*(i - dqmin.back().second) >= x) {
            dqmin.pop_back();
        }
        dqmin.push_back({x, i});
        if (dqmin.front().second == i - t - 1) dqmin.pop_front();
        sol = sol + (dqmin.front().first + 1LL*s*(i - dqmin.front().second))*c;
    }
    fout<<sol;

    fin.close();
    fout.close();
    return 0;
}