Cod sursa(job #3224279)

Utilizator MilitaruMihaiMihaiMIlitaru MilitaruMihai Data 15 aprilie 2024 08:37:25
Problema Heavy metal Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("heavymetal.in");
ofstream fout("heavymetal.out");
int n,dp[100005];
struct abc{
int a,b;}a[100005];
int comp(abc a,abc b)
{
    return a.b<b.b || a.b==b.b && a.a<b.a;
}
int main()
{
    fin>>n;
    for (int i=1;i<=n;i++)
    {
        fin>>a[i].a>>a[i].b;
    }
    sort (a+1,a+n+1,comp);
    for (int i=1;i<=n;i++)
    {
        //cout<<a[i].a<<" "<<a[i].b<<'\n';
        int st=1,dr=i,ans=0;
        while (st<=dr)
        {
            int mij=(st+dr)/2;
            if (a[mij].b<=a[i].a) st=mij+1,ans=mij;
            else dr=mij-1;
        }
        //cout<<ans<<" ";
        for (int j=ans;j<i;j++)
            if (a[i].a>=a[j].b) dp[i]=max(dp[i],dp[j]);
        dp[i]+=a[i].b-a[i].a;
        //cout<<dp[i]<<"\n";
    }
    fout<<dp[n];
    return 0;
}