Cod sursa(job #68016)

Utilizator razvi9Jurca Razvan razvi9 Data 26 iunie 2007 11:46:16
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>
int a[50001],b[50001],n,m,i,j;
int poz(int st,int dr)
{int x=0,y=-1,aux;
 while(st<dr)
 {if(a[st]>a[dr])
  {aux=a[st];
   a[st]=a[dr];
   a[dr]=aux;
   aux=b[st];
   b[st]=b[dr];
   b[dr]=aux;
   aux=x;
   x=-y;
   y=-aux;}
  st+=x;dr+=y;}
 return st;}

void qsort(int st,int dr)
{if(st>=dr)return;
 int k=poz(st,dr);
 qsort(st,k-1);
 qsort(k+1,dr);}

int main()
{freopen("orase.in","r",stdin);
 freopen("orase.out","w",stdout);
 scanf("%d %d",&m,&n);
 for(i=1;i<=n;i++)
  scanf("%d %d",&a[i],&b[i]);
 qsort(1,n);
 unsigned long max=0;
 j=1;
 for(i=2;i<=n;i++)
 {if(max<a[i]-a[j]+b[i]+b[j])
   max=a[i]-a[j]+b[i]+b[j];
  if(b[i]>a[i]-a[j]+b[j]) j=i;}
 printf("%u",max);
 fclose(stdout);
 return 0;}