Cod sursa(job #543093)

Utilizator TodeaDariustodea darius TodeaDarius Data 27 februarie 2011 15:43:58
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct oras{int dis;int lun;};
oras v[50010];
bool cmp(oras a,oras b)
{
	return(a.dis<b.dis);
}
int m,n,i,bestdist,dist,u;
int main()
{
	freopen("orase.in","r",stdin);
	freopen("orase.out","w",stdout);
	scanf("%d%d",&m,&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",&v[i].dis,&v[i].lun);
	}
	sort(v+1,v+n+1,cmp);
	if(n==1)
	{
		printf("0");
		return 0;
	}
	if(n==2)
	{
		bestdist=v[1].lun+v[2].lun+v[2].dis-v[1].dis;
		printf("%d",bestdist);
		return 0;
	}
	else
	{
		u=1;
		for(i=3;i<=n;i++)
		{
			if(v[i-1].lun>v[u].lun+v[i-1].dis-v[u].dis)
			{
				dist=v[i-1].lun+v[i].lun+v[i].dis-v[i-1].dis;
				u=i-1;
			}
			else
			{
				dist=v[u].lun+v[i].lun+v[i].dis-v[u].dis;
			}
			if(dist>bestdist)
			{
				bestdist=dist;
			}
		}
		printf("%d",bestdist);
	}
	return 0;
}