Cod sursa(job #2378789)

Utilizator MateiTrandafirMatei Trandafir MateiTrandafir Data 12 martie 2019 17:04:40
Problema Heavy metal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <algorithm>

std::pair<int, int> concerts[100001];
int n, d[100001];

inline int binary_search(int x) {
    int r = 0, pas = 1 << 16;
    while (pas) {
        if (r + pas <= n && concerts[r + pas].first <= x) r += pas;
        pas >>= 1;
    }
    return r;
}

int main() {
    std::ifstream in("heavymetal.in");
    std::ofstream out("heavymetal.out");
    int i;
    in >> n;
    for (i = 1; i <= n; ++i) in >> concerts[i].second >> concerts[i].first;
    std::sort(concerts + 1, concerts + n + 1);
    d[1] = concerts[1].first - concerts[1].second;
    for (i = 2; i <= n; ++i)
        d[i] = std::max(d[i - 1], d[binary_search(concerts[i].second)] + concerts[i].first - concerts[i].second);
    out << d[n];
    return 0;
}