Cod sursa(job #2755150)

Utilizator Catalinu23Gavrila Catalin Catalinu23 Data 26 mai 2021 20:22:26
Problema Heavy metal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;

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

int n;
int dp[NMAX];
struct interval
{
    int x,y;
};
interval v[100005];

bool cmp(const interval A, const interval 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,cmp);
    for(int i=1; i<=n; i++)
        dp[i]=max(dp[i-1], dp[CB(v[i].x, 1, i-1)] + v[i].y - v[i].x);
    fout<<dp[n];
    return 0;
}