Cod sursa(job #619681)

Utilizator ion824Ion Ureche ion824 Data 16 octombrie 2011 00:58:09
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;
typedef struct{ int d,l; }oras;
oras a[50003],k; 

void quick_sort(int lb,int ub){
     int i=lb,j=ub; oras p=a[(i+j)>>1]; 
     do{                
        while(a[i].d<p.d ||(a[i].d==p.d && a[i].l<p.l))++i;
        while(a[j].d>p.d ||(a[j].d==p.d && a[j].l>p.l))--j;    
        if(i<=j){ k=a[i]; a[i]=a[j]; a[j]=k; ++i; --j; } 
     }while(i<=j);
     if(i<ub)quick_sort(i,ub);
     if(j>lb)quick_sort(lb,j); 
     }

int main(void){
    ifstream fin("orase.in");
    ofstream fout("orase.out");
    int m,n,i,suma=0,ormin;
    fin>>m>>n;
    for(i=1;i<=n;++i)fin>>a[i].d>>a[i].l; fin.close();
    quick_sort(1,n); ormin=1;
    for(i=2;i<=n;++i){
      suma=max(suma,a[i].d-a[ormin].d+a[i].l+a[ormin].l);
      if(a[i].l-a[i].d>a[ormin].l-a[ormin].d)ormin=i;
      } 
   fout<<suma; fout.close();
 return 0;   
}