Cod sursa(job #97493)

Utilizator coderninuHasna Robert coderninu Data 7 noiembrie 2007 08:28:36
Problema Orase Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>
#define infile "orase.in"
#define outfile "orase.out"
#define nmax 50001

long n, m, i, j, last, rez, aux;
long d[nmax], l[nmax];

void readData();
void writeData();
void solve();

int main()
{
	readData();
	solve();
	writeData();
	return 0;
}

void readData()
{
	freopen(infile, "r", stdin);
	scanf("%ld %ld\n", &m, &n);
	for ( i=1; i<=n; i++ )
		scanf("%ld %ld\n", &d[i], &l[i]);
}

void solve()
{
	int gata=0, temp;
	for (i=1; i<n && !gata; i++)
	{
		gata=1;
		for ( j=i+1; j<=n; j++ )
			if (d[i]>d[j])
			{
				gata=0;
				temp=d[i];
				d[i]=d[j];
				d[j]=temp;
				temp=l[i];
				l[i]=l[j];
				l[j]=temp;
			}
	}
	last=1;
	for ( i=2; i<=n; i++ )
	{
		if ( d[i]-d[last]+l[i]+l[j] > d[i]-d[i-1]+l[i]+l[i-1] )
		{
			aux=d[i]-d[last]+l[i]+l[j];
			if (aux>rez) rez=aux;
		}
		else
		{
			aux=d[i]-d[i-1]+l[i]+l[i-1];
			last=i-1;
			if (aux>rez) rez=aux;
		}
	}
}

void writeData()
{
	freopen(outfile, "w", stdout);
	printf("%ld\n", rez);
	fclose(stdout);
}