Cod sursa(job #68851)

Utilizator c_sebiSebastian Crisan c_sebi Data 29 iunie 2007 17:40:23
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

int l[50000], d[50000];

void quick (int x[], int y[], int st, int dr)
{
	int i, ii, j, jj, aux;
	i=st; j=dr;
	ii=0; jj=-1;
 if (st<dr)
{	while (i<j)
		{
			if (x[i]>x[j])
				{ aux=x[i]; x[i]=x[j]; x[j]=aux;
				  aux=y[i]; y[i]=y[j]; y[j]=aux;
				  aux=-ii; ii=-jj; jj=aux;
				}
			i=i+ii;
			j=j+jj;
		}
	quick(x, y, st, i-1);
	quick(x, y, i+1, dr);
 }
}




int main() {
	int nr, i, lung;
	long long Dmax=0, Vmax;
	FILE *f=fopen ("orase.in", "r");
	FILE *g=fopen ("orase.out", "w");
	fscanf (f, "%d %d", &lung, &nr);
	for (i=0; i<nr; ++i)
		fscanf (f, "%d %d", &d[i], &l[i]);
	quick (d, l, 0, nr-1);
	Vmax=l[0]-d[0];
	for (i=1; i<nr; ++i) {
		if (l[i-1]-d[i-1] > Vmax)
			Vmax=l[i-1]-d[i-1];
		if (l[i]+d[i]+Vmax > Dmax)
			Dmax = l[i]+d[i]+Vmax;
	}
	fprintf (g, "%lld\n", Dmax);
	fclose(f);
	fclose(g);
	return 0;
}