Pagini recente » Cod sursa (job #2846267) | Rating Nicolae Timofte (nicolaetimofte) | Cod sursa (job #981209) | Cod sursa (job #254078) | Cod sursa (job #70295)
Cod sursa(job #70295)
#include<stdio.h>
long int n,m,d[5001],l[5001],aux,i,delta,delta1,sol,sol1;
int swap(long int i1,long int i2);
int heapdown(long int ic,long int nc);
int main()
{
FILE *f,*g;
f=fopen("orase.in","r");
g=fopen("orase.out","w");
fscanf(f,"%ld%ld",&m,&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld%ld",&d[i],&l[i]);
for(i=n/2;i>=1;i--)
heapdown(i,n);
for(i=n;i>=1;i--)
{swap(1,i);heapdown(1,i-1);}
delta=l[1]-d[1];
for(i=2;i<=n;i++)
{ sol1=l[i]+d[i]+delta;
sol=(sol>sol1)?sol:sol1;
delta1=l[i]-d[i];
delta=(delta>delta1)?delta:delta1;
}
fprintf(g,"%ld\n",sol);
fcloseall();
return 0;
}
int swap(long int i1,long int i2)
{
aux=d[i1];d[i1]=d[i2];d[i2]=aux;
aux=l[i1];l[i1]=l[i2];l[i2]=aux;
return 0;
}
int heapdown(long int ic,long int nc)
{
long int is=2*ic,is1=2*ic+1;
if(is>nc)return 0;
if(is<nc) if(d[is1]>d[is]) is=is1;
if(d[is]>d[ic]){ swap(ic,is);heapdown(is,nc);}
return 0;
}