Cod sursa(job #70534)

Utilizator zobicaMarin Marin zobica Data 6 iulie 2007 12:45:44
Problema Orase Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>

using namespace std;



long m , n; 
struct oras {
	long d, l;
};
oras o[50000];

void citire() {
	ifstream fin ("orase.in");
	fin >> m >> n ;
	for (int i = 0; i < n ; i++) 
		fin >> o[i].d >> o[i].l;
	fin.close();
}

void qsort(long st, long dr) {
	long i = st, j = dr;
	oras aux = o[i];
	do {
		while (i < j && o[j].d >= aux.d) 
			j--;
		o[i] = o[j];
		while (i < j && aux.d >= o[i].d) 
			i++;
		o[j] = o[i];
	}  while (i != j);
	o[i] = aux;
	if (st < i - 1) 
		qsort(st, i - 1);
	if (i + 1 < dr) 
		qsort(i + 1, dr);
	o[j] = o[i];	
}	


long max() {
	long ma = 0, k = 0;
	for (long i = n - 1 ; i >0 ; i --) {
		for (long j = k; j < i ; j ++)	{
			long d = o[i].d + o[i].l - o[j].d + o[j].l;
			if (ma < d){
				ma = d;
				k = j;
			}
		}
	}
	return ma;

} 

void scrie () {
	ofstream fout("orase.out");
	fout << max();
	fout.close();
}

int main() {
	citire();
	qsort(0, n-1);
	scrie();
	return 0;
}