Cod sursa(job #2965394)

Utilizator C_R_I_S_T_I_2_3Cristi Gavrila C_R_I_S_T_I_2_3 Data 15 ianuarie 2023 09:47:07
Problema Heavy metal Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("heavymetal.in");
ofstream fout("heavymetal.out");
int n;
struct interv
{
    int x, y;
};
interv v[100005];
int dp[100005];
bool cmp(const interv A, const interv B)
{
    if (A.y == B.y)
        return A.x < B.x;
    return A.y < B.y;
}
int CB(int x, int st, int dr)
{
    int sol = 0;
    while (st <= dr)
    {
        int mij = (st + dr) / 2;
        if (x >= v[mij].y)
            sol = mij, st = mij + 1;
        else
            dr = mij - 1;
    }
    return sol;
}
int main()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
    {
        fin >> v[i].x >> v[i].y;
    }
    sort(v + 1, v + n + 1);
    for(int i = 1; i <= n; i ++)
    {
        dp[i] = max(dp[i], dp[CB(v[i].x, 1, i-1)] + v[i].y - v[i].x);
    }
    fout << dp[n];
    return 0;
}