Cod sursa(job #2099209)

Utilizator AndaionicaIonica Anda Maria Andaionica Data 4 ianuarie 2018 10:23:59
Problema Heavy metal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("heavymetal.in");
ofstream g("heavymetal.out");
struct heavymetal{
int a,b;
}v[100001];
int cmp(heavymetal x,heavymetal y)
{ if(x.b==y.b)
    return x.a>x.b;

        return x.b<y.b;

}
int n,i,j;
long long d[100001],Max;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i].a>>v[i].b;
    sort(v+1,v+n+1,cmp);
    for(i=1;i<=n;i++)
    {
        d[i]=max(d[i-1],1ll*v[i].b-v[i].a);
        int st=1,dr=i-1;int sol=0;
        while(st<=dr){
            int mid=(st+dr)/2;
            if(v[i].a>=v[mid].b)
            {
                sol=mid;
                st=mid+1;
            }
            else
                dr=mid-1;

        }

                d[i]=max(d[i],d[sol]+v[i].b-v[i].a);
        Max=max(Max,d[i]);
    }
    g<<Max;
    return 0;
}