Cod sursa(job #264961)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 22 februarie 2009 23:56:08
Problema Orase Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
# include <stdio.h>
# include <stdlib.h>
# define n 50001
long M,L[n],N,D[n],j,i;
long long max;
void quick(int st, int dr)
{
  long i=st,j=dr,aux,p=D[(st+dr)/2];
  if (dr<=st) return;
  while (i<=j){
    while (D[i]<p) i++;
    while (p<D[j]) j--;
    if (i<=j) {
    aux=D[i];D[i]=D[j];D[j]=aux;
    aux=L[i];L[i]=L[j];L[j]=aux;
    i++; j--;
    }
  }
  if (st<j) quick(st,j);
  if (i<dr) quick(i,dr);
}

int main(){
  freopen("orase.in", "r", stdin);
  freopen("orase.out", "w", stdout);
  scanf("%ld %ld",&M,&N);
  for (i=1;i<=N;++i)
    scanf("%ld %ld",&D[i],&L[i]);
  quick(1,N);
  j=1; max=0;
  for (i=2;i<=N;++i){
    if (max<L[i]+L[j]+abs(D[i]-D[j])) max=L[i]+L[j]+abs(D[i]-D[j]);
    if (abs(L[i]-D[i])>abs(L[j]-D[j]))j=i;
  }
  printf("%lld",max);
  return 0;
}