Pagini recente » Cod sursa (job #2999523) | Cod sursa (job #3182425) | Cod sursa (job #2520408) | Cod sursa (job #860695) | Cod sursa (job #137369)
Cod sursa(job #137369)
#include <stdio.h>
#include <math.h>
int n;long a[1000][2],b[1000][2];
int partitionare(int st,int dr)
{
int m,i,j;
long p;
long aux;
m=(st+dr)/2;
p=a[m][1];
i=st-1;
j=dr+1;
while (1)
{
do {++i;}while (a[i][1]<p);
do {--j;}while (a[j][1]>p);
if (i<j)
{
aux=a[i][1];
a[i][1]=a[j][1];
a[j][1]=aux;
aux=a[i][0];
a[i][0]=a[j][0];
a[j][0]=aux;
} else
return j;
}
}
void qsort(int st,int dr)
{
int p;
if (st<dr)
{
p=partitionare(st,dr);
qsort(st,p);
qsort(p+1,dr);
}
}
int main()
{
freopen("heavymetal.in","r",stdin);
freopen("heavymetal.out","w",stdout);
scanf("%d",&n);
int i;
for (i=1;i<=n;i++)
{
scanf("%ld %ld",&a[i][0],&a[i][1]);
}
qsort(1,n);
int ai,bi,max=0,g=0;
ai=a[1][0];
bi=a[1][1];
// sum=a[1][1]-a[1][0];
g=0;
for (i=2;i<=n;i++)
{
if (abs(bi-a[i][0])<1)
{
bi=a[i][1];
}
else
if (abs(bi-a[i][0])==1)
{
bi=a[i][1];
g++;
} else
{
if (max<bi-ai-g+1)
{
max=bi-ai-g+1;
}
ai=a[i][0];
bi=a[i][1];
g=0;
}
}
if (max<bi-ai-g+1)
{
max=bi-ai-g+1;
}
ai=a[i][0];
bi=a[i][1];
g=0;
printf("%d",max);
return 0;
}