Cod sursa(job #2517146)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 2 ianuarie 2020 22:18:00
Problema Heavy metal Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>
#define N 100002

using namespace std;

struct bla
{
    int x,y;
}v[N];

bool cmp(bla A, bla B)
{
    if(A.x==B.x) return (A.y<B.y);
    return (A.x<B.x);
}
int din[N];
int srch(int st, int dr, int start)
{
    int mij,sol=0;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(v[mij].y<=start)///cu cat timpul intre concerte e mai scurt, cu atat se canta mai mult
            sol=mij,st=mij+1;
        else
            dr=mij-1;
    }
    return sol;
}
int main()
{
    ifstream f("heavymetal.in");
    ofstream g("heavymetal.out");
    int n,found;
    f>>n;
    for(int i=1;i<=n;++i) f>>v[i].x>>v[i].y;
    sort(v+1,v+n+1,cmp);
    din[1]=v[1].y-v[1].x;
    for(int i=2;i<=n;++i)
    {
        found=srch(1,i,v[i].x);
        din[i]=max(din[i-1],din[found]+v[i].y-v[i].x);
    }
    g<<din[n];
    f.close();
    g.close();
    return 0;
}