Cod sursa(job #83335)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 10 septembrie 2007 20:42:03
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>
#define inf 1000000000

long m,n,i,d[50001],l[50001],ind[50001];

int comp(const void* a,const void* b){
    return d[(*(long*)a)]-d[(*(long*)b)];
}

int main(){
    freopen ("orase.in","r",stdin);
    freopen ("orase.out","w",stdout);
    long a,b,maxi,maxj;
    
    scanf ("%ld %ld",&m,&n);
    for (i=1;i<=n;i++){
        scanf ("%ld %ld",&d[i],&l[i]);
        ind[i]=i;
    }
    qsort(ind,n+1,sizeof(long),comp);
    maxj=-inf;
    maxi=-inf;
    for (i=2;i<=n;i++){
         if (maxj<l[ind[i-1]]-d[ind[i-1]]){
            maxj=l[ind[i-1]]-d[ind[i-1]];
            a=ind[i-1];
         }
         if (d[ind[i]]+l[ind[i]]+maxj>maxi){
            maxi=d[ind[i]]+l[ind[i]]+maxj;
            b=ind[i];
         }
    }
    printf("%ld\n",l[a]+l[b]+d[b]-d[a]);
    return 0;
}