Cod sursa(job #264965)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 23 februarie 2009 00:06:04
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
# include <stdio.h>
# define n 50002
long M,L[n],N,D[n],j,i;
long long max;
void quick(long st, long 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=-1;
  for (i=1;i<=N;++i){
    if (max<L[i]+L[j]+D[i]-D[j]) max=L[i]+L[j]+D[i]-D[j];
    if (L[i]-D[i]>L[j]-D[j])j=i;
  }
  printf("%lld",max);
  return 0;
}