Cod sursa(job #968873)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 2 iulie 2013 22:31:15
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

struct elem
{
    int d;
    int h;
}v[50005];

bool comp(const elem &a,const elem &b)
{
    if(a.d<b.d)
        return 1;
    else if(a.d==b.d)
        if(a.h<b.h)
           return 1;
    return 0;
}

bool operator<(const elem &a,const elem &b)
{
    if((a.h-a.d)<(b.h-b.d))
        return 1;
    return 0;
}

int main()
{
    ifstream cin("orase.in");
    ofstream cout("orase.out");

    int n,m,i;
    cin>>m>>n;
    for(i=0;i<n;i++)
        cin>>v[i].d>>v[i].h;
    sort(v,v+n,comp);
    priority_queue<elem> coada;
    coada.push(v[0]);
    int sol=-1;
    int aux;
    for(i=1;i<n;i++)
    {
        aux=v[i].h+v[i].d-coada.top().d+coada.top().h;
        if(aux>sol)
            sol=aux;
        coada.push(v[i]);
    }
    cout<<sol<<'\n';
    cin.close();
    cout.close();
    return 0;
}