Cod sursa(job #532622)

Utilizator razyelxrazyelx razyelx Data 12 februarie 2011 02:31:18
Problema Orase Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream.h>
#define M 1000001
#define N 50001

ifstream fin("orase.in");
ofstream fout("orase.out");

int ds[N],dso[N],distMax[N],n,m,best = -1, maxj = 0; // ds[N] distante strazi , dso[N] distanta strazi orase

void read(){
	int i;
	
	fin>>m>>n;
	
	for (i=1;i<=n;i++)
		fin>>ds[i]>>dso[i];
}

int absolut(int x, int y){
	if ( x > y)
		return x-y;
	return y-x;
}

void solve(){
	int i;
	
	for (i=1; i<=n; i++){
		if ( ds[i] + dso[i] + maxj > best)
			best = ds[i] + dso[i] + maxj;
		if ( absolut(ds[i],dso[i]) > maxj )
			maxj = absolut(ds[i],dso[i]);
	}	
}

void qsort(int s, int d){
	int i=s,j=d,pi=0,pj=1,aux;
	
	if (s<d){
	
		while(i<j){
			if (ds[i] > ds[j]){
				aux = ds[i];
				ds[i] = ds[j];
				ds[j] = aux;
				
				aux = dso[i];
				dso[i] = dso[j];
				dso[j] = aux;
				
				aux = pi;
				pi = pj;
				pj = aux;
			}
			i += pi; j -= pj;
		}
		
		qsort(s,i-1);
		qsort(m+1,d);
	
	}
}

int main(){

	read();
	qsort(1,n);
	solve();
	
	//for (int i=1;i<=n;i++)
	//	fout<<ds[i]<<","<<dso[i]<<" ";
	fout<<best;
	return 0;
}