Pagini recente » Cod sursa (job #2494957) | Cod sursa (job #668271) | Cod sursa (job #2324176) | Cod sursa (job #1663996) | Cod sursa (job #137588)
Cod sursa(job #137588)
#include <stdio.h>
#include <stdlib.h>
int n,a[100000],b[100000],s,c[100000],d[100000],z;
void bubble()
{
int i,z,sch;
sch=1;
while (sch==1)
{
sch=0;
for (i=1; i<n; ++i)
{
if (a[i]>a[i+1] || (a[i]==a[i+1] && b[i]<b[i+1]))
{
z=a[i];
a[i]=a[i+1];
a[i+1]=z;
z=b[i];
b[i]=b[i+1];
b[i+1]=z;
sch=1;
}
}
}
}
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int main()
{
freopen("heavymetal.in","r",stdin);
freopen("heavymetal.out","w",stdout);
scanf("%d",&n);
int i,j;
for (i=1; i<=n; ++i) scanf("%d%d",&a[i],&b[i]);
bubble();
for (i=1; i<=n; ++i)
{
if (i>1 && i<n && a[i]>=b[i-1] && b[i]<=a[i+1])
{
s+=(b[i]-a[i]);
c[i]=1;
}
if (i==1 && b[i]<=b[i+1])
{
s+=(b[i]-a[i]);
c[i]=1;
}
if (i==n && a[i]>=b[i-1])
{
s+=(b[i]-a[i]);
c[i]=1;
}
}
z=0;
for (i=1; i<=n; ++i)
{
if (c[i]==0)
{
++z;
d[z]=b[i]-a[i];
}
}
qsort (d,z+1,sizeof(int),compare);
for (i=z; i>z/2; --i)
{
s+=d[i];
}
printf("%d\n",s);
return 0;
}