Cod sursa(job #165625)

Utilizator katakunaCazacu Alexandru katakuna Data 26 martie 2008 13:45:22
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>

struct aaa {int a,b;};
aaa s[50010],aux;

int k,c,p,min,p1,max,n,m,i;

void sort(){   
  
 for(i=2;i<=k;i++){   
  c=i;   
  p=c>>1;   
  
     while((p)&&(s[c].a>s[p].a)){
     aux=s[c];
     s[c]=s[p];
     s[p]=aux;

     c=p;
     p=c>>1;

     }

  }


  for(i=k;i>1;i--){
  aux=s[i];
  s[i]=s[1];
  s[1]=aux;
  p=1;
  c=p<<1;

    k--;

      while(c<=k){
       if((s[c].a<s[c+1].a)&&c<k){c++;}

       if(s[p].a<s[c].a){
       aux=s[p];
       s[p]=s[c];
       s[c]=aux;
       p=c;
       c=p<<1;
       }


       else{break;}

      }


  }


}



int main(){

FILE *f=fopen("orase.in","r");

fscanf(f,"%d %d",&m,&n);

  for(i=1;i<=n;i++){
  fscanf(f,"%d %d",&s[i].a,&s[i].b);
  }

fclose(f);

k=n;

sort();

min=s[1].a-s[i].b;
p1=1;

   for(i=2;i<=n;i++){

    if(s[i].a+s[i].b-min>max)
    max=s[i].a+s[i].b-min;

     if(s[i].a-s[i].b<min){
     min=s[i].a-s[i].b;
     p1=i;
     }

   }

FILE *g=fopen("orase.out","w");
fprintf(g,"%d",max);
fclose(g);

return 0;
}