Pagini recente » Cod sursa (job #3281007) | Cod sursa (job #2693525) | Cod sursa (job #384470) | Cod sursa (job #1710059) | Cod sursa (job #371914)
Cod sursa(job #371914)
#include <stdio.h>
int v[50001],aux[50001],v2[50001],aux2[50001];
void inter(int l,int mid,int r)
{
int i=l,j=mid+1,x=0;
do
{
++x;
if (((v[i]<v[j])&&(i<mid+1))||(j>r))
{
aux[x]=v[i];
aux2[x]=v2[i];
++i;
}
else
{
aux[x]=v[j];
aux2[x]=v2[j];
++j;
}
}
while (x<r-l+1);
for (i=l;i<r+1;i++) {v[i]=aux[i-l+1];v2[i]=aux2[i-l+1];}
}
void merge(int l,int r)
{
if (l==r) return;
int mid=((l+r)/2);
merge(l,mid);
merge(mid+1,r);
inter(l,mid,r);
}
int main()
{
int i,n,min=1000000000,max=0,m;
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
scanf("%d%d",&m,&n);
for (i=1;i<n+1;i++) scanf("%d%d",&v[i],&v2[i]);
merge(1,n);
min=v[1]-v2[1];
for (i=2;i<n+1;i++)
{
if (v2[i]+v[i]-min>max) max=v2[i]+v[i]-min;
if (v[i]-v2[i]<min) min=v[i]-v2[i];
}
printf("%d",max);
return 0;
}