Cod sursa(job #307791)

Utilizator aladinaladin aladinn aladin Data 24 aprilie 2009 23:03:12
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
int n,ll[50000],C[50000];


void qsort(long l, long r)  
 {  
  long i,j,x,y;  
  i=l;  
  j=r;  
  x=C[(l+r)>>1];  
 do  
     {  
     while ((C[i]<x)&&(i<n)) ++i;  
     while ((x<C[j])&&(j>1)) --j;  
     if (i<=j)  
         {  
         y=C[i];  
        C[i]=C[j];  
         C[j]=y;
         y=ll[i];ll[i]=ll[j];ll[j]=y;		 
         ++i;  
         --j;  
         }  
     }  
 while (i<=j);  
  if (l<j) qsort(l,j);  
  if (i<r) qsort(i,r);  
 }  


int main()
{int m,i,j;
 long long max;
 
 freopen("orase.in","r",stdin);
 freopen("orase.out","w",stdout);
 scanf("%d %d",&m,&n);
 for (i=1;i<=n;i++)
	 scanf("%d %d",&C[i],&ll[i]);

 /*for (i=1;i<n;i++)
	 for (j=i+1;j<=n;j++)
		 if (d[i]>d[j]) 
		 {m=d[i];d[i]=d[j];d[j]=m;
		  m=l[i];l[i]=l[j];l[j]=m;		 }
		 
		 */
 qsort(1,n);
		 
 for (i=2,j=1,max=-1;i<=n;i++)
    {
		if (ll[i]+C[i]+ll[j]-C[j]>max) max=ll[i]+C[i]+ll[j]-C[j];
     if (ll[i]-C[i]>ll[j]-C[j]) j=i;
	}
 printf("%lld",max);
return 0;}