Pagini recente » Cod sursa (job #517699) | Cod sursa (job #2821502) | Cod sursa (job #1767341) | Cod sursa (job #214274) | Cod sursa (job #278449)
Cod sursa(job #278449)
#include<stdio.h>
#define max(a,b) ((a>b) ? a : b)
long n,m,l,d,optim;
struct max
{ long val,crt;
long dist,lun;
}max1,max2,min1,min2;
int main()
{
long i;
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
scanf("%d%d",&m,&n);
for(i=1;i<=n;i++)
{ scanf("%d%d",&d,&l);
if(l+d>max1.val)
{ max2=max1;
max1.val=l+d;
max1.dist=d;
max1.lun=l;
max1.crt=i;
}
else
if(l+d>max2.val)
{ max2.val=l+d;
max2.dist=d;
max2.lun=l;
max2.crt=i;
}
if(l-d>min1.val)
{ min2=min1;
min1.val=l-d;
min1.dist=d;
min1.lun=l;
min1.crt=i;
}
else
if(l-d>min2.val)
{ min2.val=l-d;
min2.dist=d;
min2.lun=l;
min2.crt=i;
}
}
long op1,op2;
if(max1.crt!=min1.crt)
if(max1.dist>min1.dist)
optim=max1.lun+min1.lun+max1.dist-min1.dist;
else
optim=max1.lun+min1.lun-max1.dist+min1.dist;
else
{
if(max1.dist>min2.dist)
op1=max1.lun+min2.lun+max1.dist-min2.dist;
else
op1=max1.lun+min2.lun-max1.dist+min2.dist;
if(max2.dist>min1.dist)
op2=max2.lun+min1.lun+max2.dist-min1.dist;
else
op2=max2.lun+min1.lun-max2.dist+min1.dist;
optim=max(op1,op2);
}
printf("%d\n",optim);
return 0;
}