Cod sursa(job #278433)

Utilizator Andrei_ScorpioAndreiana Andrei Daniel Andrei_Scorpio Data 12 martie 2009 12:23:30
Problema Orase Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
#include<math.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;
		}
 }
 if(max1.crt!=min1.crt)
	optim=max1.lun+min1.lun+abs(max1.dist-min1.dist);
 else
	optim=max(max1.lun+min2.lun+abs(max1.dist-min2.dist),max2.lun+min1.lun+abs(max2.dist-min1.dist));
 printf("%d\n",optim);
 return 0;
}