Cod sursa(job #337344)

Utilizator ZethpixZethpix Zethpix Data 3 august 2009 14:01:09
Problema Orase Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
long m,n,i,d[50002],l[50002];
void inter(long x,long m,long y){
	long a[50002];
	for(i=x;i<=y;i++)a[i]=d[i];
	long i1=x;
	long i2=m+1;
	long k=x-1;
	while(i1<=m&&i2<=y)
		if(a[i1]<a[i2])
			d[++k]=a[i1++];
		else
			d[++k]=a[i2++];
	for(i=i1;i<=m;i++)
		d[++k]=a[i];
	for(i=i2;i<=y;i++)
		d[++k]=a[i];
}
void sort(long x,long y){
	if(x!=y){
		long m=(x+y)/2;
		sort(x,m);
		sort(m+1,y);
		inter(x,m,y);
	}
}
int main(){
	FILE *f,*g;
	f=fopen("orase.in","r");
	g=fopen("orase.out","w");
	fscanf(f,"%ld%ld",&m,&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%ld%ld",&d[i],&l[i]);
	sort(1,n);
	long mj=1;
	long max=l[2]+d[2]+l[1]-d[1];
	for(i=3;i<=n;i++){
		if(l[i]+d[i]+l[i-1]-d[i-1]>max){
			max=l[i]+d[i]+l[i-1]-d[i-1];
			mj=i-1;
		}
		else
			if(l[i]+d[i]+l[mj]-d[mj]>max)
				max=l[i]+d[i]+l[mj]-d[mj];
	}
	fprintf(g,"%ld\n",max);
	fclose(f);
	fclose(g);
	return 0;
}