Pagini recente » Cod sursa (job #3179203) | Cod sursa (job #196798) | Cod sursa (job #2653935) | Cod sursa (job #3270307) | Cod sursa (job #163647)
Cod sursa(job #163647)
#include<stdio.h>
long a[220][3],p,q,maxx,i,n,j,aux,k,min,cont,sol[220];
long ab(long k)
{
if (k<0) return -k;
else return k;
}
long max(long a,long b)
{
if (a>b) return a;
else return b;
}
int main()
{
freopen("wanted.in","r",stdin);
freopen("wanted.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)
{
scanf("%ld %ld",&p,&q);
if (p<0)
{
a[i][0]=p+(-q);a[i][1]=p;a[i][2]=q;
}
else
{
a[i][0]=p+q;a[i][1]=p;a[i][2]=q;
}
}
min=2000000000;
for (i=1;i<n;i++)
{
for (j=i+1;j<=n;j++)
{
if (a[i][1]>a[j][1])
{
aux=a[i][0];a[i][0]=a[j][0];a[j][0]=aux;
aux=a[i][1];a[i][1]=a[j][1];a[j][1]=aux;
aux=a[i][2];a[i][2]=a[j][2];a[j][2]=aux;
}
}
k=ab(a[i][0]);
if (k<min)
{
min=k;
cont=i;
}
}
sol[cont]=min;
for (i=cont-1; i>0; i--)
{
for(j=i+1;j<=cont;j++)
sol[i]=max(sol[i],sol[j]+a[j][1]-a[i][1]+a[i][2]+a[j][2]);
if (sol[i]>maxx)
maxx=sol[i];
}
for (i=cont+1;i<=n;i++)
{
for (j=i-1;j>=cont;j--)
sol[i]=max(sol[i],sol[j]+a[i][1]-a[j][1]+a[j][2]+a[i][2]);
if (sol[i]>maxx)
maxx=sol[i];
}
printf("%ld\n",maxx);
return 0;
}